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

希望有时间落实下来~

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

相关推荐
木子_lishk24 分钟前
gateway 支持同时使用 https 和 http访问
https·gateway
一元咖啡26 分钟前
SpringCloud Gateway转发请求到同一个服务的不同端口
spring·spring cloud·gateway
java亮小白19972 小时前
Spring循环依赖如何解决的?
java·后端·spring
苏-言2 小时前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
草莓base3 小时前
【手写一个spring】spring源码的简单实现--容器启动
java·后端·spring
冰帝海岸9 小时前
01-spring security认证笔记
java·笔记·spring
没书读了10 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
代码小鑫13 小时前
A043-基于Spring Boot的秒杀系统设计与实现
java·开发语言·数据库·spring boot·后端·spring·毕业设计
真心喜欢你吖13 小时前
SpringBoot与MongoDB深度整合及应用案例
java·spring boot·后端·mongodb·spring
斗-匕15 小时前
Spring事务管理
数据库·spring·oracle