Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台

背景:新项目准备用SSO来整合之前多个项目的登录和权限,同时引入网关来做后续的服务限流之类的操作,所以搭建了下面这个系统雏形。

**关键词:**Spring Gateway, Spring Security, JWT, OAuth2, Nacos, Redis, Danymic datasource, Javax, thymeleaf

如果对上面这些技术感兴趣,可以继续往下阅读

如果只对结果感兴趣,直接拖到最后看代码

前置知识点:

1,Nacos安装

Nacos搭建和使用保姆级教程_nacos 搭建_东皋长歌的博客-CSDN博客

2,动态数据源配置

Spring 多数据源方法级别注解实现_东皋长歌的博客-CSDN博客

1, 基于网关的权限中台架构

2,JWT实现Spring Security

通过JWT实现token的生成、验证、注销,token作为全局权限验证的唯一凭证

3,OAuth2 认证

0Auth2 有4种内置验证模式,实现OAuth2的验证标准,从而获得访问资源的token

3.1 密码模式

3.2 客户端模式

3.3 简化模式

3.4 授权码模式

3.5 扩展的手机密码模式

3.6 扩展的手机验证码模式

4,RBAC

基于用户角色权限的访问控制设置

5,体验验证

注意: 全部是通过网关去访问的,网关地址为:http://你的服务器IP:9200

5.1 简化模式

验证成功之后,跳转到指定网页

http://你的服务器IP:9200/oauth/authorize?response_type=token\&client_id=phone\&redirect_uri=[http://www.baidu.com\&scope=all]()

5.2 授权码模式

获得授权码,然后拿授权码拿token

http://你的服务器IP:9200/oauth/authorize?client_id=test\&response_type=code\&scope=all\&redirect_uri=[百度一下,你就知道](http://www.baidu.com "百度一下,你就知道")

6,接入步骤

6.1 添加client

6.2 新增应用,注册到Nacos

6.3 所有应用都通过网关访问

7,代码

https://download.csdn.net/download/wangerrong/88201409?spm=1001.2014.3001.5503

8,辅助工具

8.1 发送验证码(type=1是通过邮箱,type=2是通过手机短信(还没实现,因为没钱发短信,不过接入进来也很简单))

http://你的服务器IP:9200/auth-api/message/verifycode?phone=17621210366\&type=1

9,写在最后的也很重要

上面写的比较简单,因为中间的坑实在是太多了,全网没有一个全面的可用的Spring gateway+Spring Security+OAuth2 的例子,实在是很遗憾,在找了N多文档之后,才完成了上面的代码。

当然也有一个OAuth2写得比较好的,大家可以看看
Spring Cloud Security OAuth2.0 开发实战 | 一本册子

真的有两天,找资料找的吐血,好在是慢慢发现,这玩意儿也就那样!

希望对大家有帮助!

先挖几个坑

1,OAuth2 知多少

2,JWT 确实很好用

3,Spring Gateway+OAuth2+Spring Security代码解析

4,自定义OAuth2认证模式

希望有时间落实下来~

码字不易,记得点赞关注哟!

相关推荐
0和1的舞者6 小时前
SpringBoot 接口规范:统一返回、异常处理与拦截器详解
java·spring boot·后端·spring·知识·统一
ZeroToOneDev6 小时前
SpringMvc
java·spring
坚持学习前端日记6 小时前
认证模块文档
java·服务器·前端·数据库·spring
仙俊红15 小时前
spring的IoC(控制反转)面试题
java·后端·spring
阿湯哥15 小时前
AgentScope Java 集成 Spring AI Alibaba Workflow 完整指南
java·人工智能·spring
廋到被风吹走15 小时前
【Spring】Spring Cloud 熔断降级深度解析:从 Hystrix 到 Resilience4j 的演进
spring·spring cloud·hystrix
fenglllle16 小时前
spring-data-jpa saveall慢的原因
数据库·spring·hibernate
czlczl2002092516 小时前
Guava Cache 原理与实战
java·后端·spring
阿湯哥19 小时前
Spring AI Alibaba 实现 Workflow 全指南
java·人工智能·spring
萧曵 丶1 天前
Spring Cloud Alibaba 详解
spring·spring cloud