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

希望有时间落实下来~

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

相关推荐
迢迢星万里灬24 分钟前
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
java·spring boot·spring·mybatis·计算机基础·面试指南
烟沙九洲28 分钟前
@Transactional 什么情况下会失效
java·spring
会飞的哈士奇39 分钟前
Html实现图片上传/裁剪/马赛克/压缩/旋转/缩放
java·spring·html
Chan1611 小时前
【 SpringCloud | 微服务 MQ基础 】
java·spring·spring cloud·微服务·云原生·rabbitmq
stein_java14 小时前
springMVC-10验证及国际化
java·spring
LUCIAZZZ15 小时前
HikariCP数据库连接池原理解析
java·jvm·数据库·spring·springboot·线程池·连接池
考虑考虑15 小时前
Springboot3.5.x结构化日志新属性
spring boot·后端·spring
保持学习ing20 小时前
Spring注解开发
java·深度学习·spring·框架
异常君21 小时前
Spring 中的 FactoryBean 与 BeanFactory:核心概念深度解析
java·spring·面试
cacyiol_Z21 小时前
在SpringBoot中使用AWS SDK实现邮箱验证码服务
java·spring boot·spring