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

希望有时间落实下来~

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

相关推荐
无理 Java42 分钟前
【技术详解】SpringMVC框架全面解析:从入门到精通(SpringMVC)
java·后端·spring·面试·mvc·框架·springmvc
gobeyye1 小时前
spring loC&DI 详解
java·spring·rpc
java6666688882 小时前
Java中的对象生命周期管理:从Spring Bean到JVM对象的深度解析
java·jvm·spring
王维诗里的代码i4 小时前
Redis基础二(spring整合redis)
java·数据库·redis·spring
椰椰椰耶5 小时前
【Spring】@RequestMapping、@RestController和Postman
java·后端·spring·mvc
大道归简11 小时前
2.点位管理开发(续)及设计思路——帝可得后台管理系统
java·开发语言·spring boot·spring·前端框架
PacosonSWJTU1 天前
spring揭秘25-springmvc04-servlet容器与springmvc容器总结
spring·springmvc
gys98951 天前
(IDEA)spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案
spring·intellij-idea·jar
vonlinee1 天前
Spring系列 AOP实现过程
java·后端·spring
骆晨学长1 天前
基于SSM的电影院订票系统设计与实现
java·开发语言·spring boot·后端·spring·推荐算法