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, 基于网关的权限中台架构

Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台_第1张图片

2,JWT实现Spring Security

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

3,OAuth2 认证

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

3.1 密码模式

Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台_第2张图片

3.2 客户端模式

Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台_第3张图片

3.3 简化模式

Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台_第4张图片

3.4 授权码模式

Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台_第5张图片

Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台_第6张图片

3.5 扩展的手机密码模式

Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台_第7张图片

3.6 扩展的手机验证码模式

Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台_第8张图片

4,RBAC

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

Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台_第9张图片

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=百度一下,你就知道

Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台_第10张图片

6,接入步骤

6.1 添加client

Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台_第11张图片

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认证模式

希望有时间落实下来~

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


 

你可能感兴趣的:(微服务&Spring,spring,gateway,OAuth2,Nacos,JWT)