SpringSecurity;OAuth2
2022-03-24 15:58:09 1 举报
AI智能生成
详细介绍spring security 以及 oauth2.0,并且加入了jwt。
作者其他创作
大纲/内容
基本概念
认证
授权
会话
RBAC模型
主体,角色,资源,行为
SpringBoot Security快速上手
pom
启动类加上@EnableWebSecurity
创建几个简单的资源访问接口
注入免密解析器PasswordEncoder和用户来源UserDetailsService
注入校验配置规则
获取当前用户
SpringBoot Security项目的扩展点
主体数据来源
密码解析器
自定义授权及安全拦截策略
自定义登录
记住我功能
拦截策略
csrf
注解级别方法支持
异常处理
SpringBoot Security工作原理
FilterChainProxy相关类的UML图
SecurityFilterChain流程图
主要过滤器
SecurityContextPersistenceFilter
UsernamePasswordAuthenticationFilter
FilterSecurityInterceptor
ExceptionTranslationFilter
认证流程
过程
获取认证信息
将认证信息提交给认证管理器
认证成功
认证核心接口AuthenticationProvider
几个核心的组件的调用流程
AuthenticationProvider接口:认证处理器
Authentication认证信息
UserDetailsService接口: 获取用户信息
UserDetails: 用户信息实体
PasswordEncoder 密码解析器
BCryptPasswordEncoder
授权流程
拦截请求
获取资源访问策略
决策
决策流程
AccessDecisionVoter
设置投票决定器
注入bean
configure中配置
自定义认证
自定义登录页面及登录过程
将数据源改为从数据库获取数据
修改UserDetails,从数据库加载用户信息。
修改HttpSecurity,从数据库加载授权配置。
配置方法与资源绑定关系
代码方式配置
注解方式配置
会话控制
获取当前用户信息
会话控制
会话超时
安全会话cookie
退出
logoutHandler
分布式认证方案
基于Session的认证方式
Session复制
Session黏贴
Session集中存储
基于Token的认证方式
方案选型
OAuth2.0
简介
用户访问百度的OAuth2.0过程
OAuth2.0协议
角色理解
客户端
资源拥有者
授权服务器(也称为认证服务器)
资源服务器
重要概念
clientDetails(client_id)
secret
scope
access_token
grant_type
userDetails(user_id)
Spring Security OAuth2.0(基于微服务)
搭建微服务授权中心
引入依赖
添加yml配置
配置授权服务器
加入默认的数据表
配置security
封装用户信息
用户实体
实现UserDetails
实现UserDetailsService
配置资源服务器,方便测试
资源服务器配置
资源
流程测试
授权码模式
GET 访问
输入用户名/密码
询问是否同意登录,点击同意
调转到redirect_uri并附带code值
POST 访问
获取数据如下
访问资源
密码模式
可以获取token
整合JWT
JWT结构
头部(header)
载荷(payload)
签名(signature)
注意
整合过程
引入依赖
添加JWT配置
在授权服务器中指定令牌的存储策略是JWT
测试
密码模式测试
将access_token复制到https://jwt.io/的Encoded中打开,可以看到会员认证信息
刷新token
整合JWT(优化)
生成jks证书文件
将生成的jwt.jks文件copy到授权服务器的resource目录下
查看公钥信息
授权服务器增加jwt的属性配置类
属性类
yml配置
在jwt配置类中指定属性配置类
修改JwtTokenStoreConfig的配置,支持非对称加密
扩展JWT中的存储内容
增强器
在 JwtTokenStoreConfig中配置增强器
在授权服务器配置中配置JWT的内容增强器
测试
密码模式测试
接入网关服务
yml配置认证中心的路由
编写GateWay的全局过滤器进行权限的校验拦截
过滤不需要认证的url
配置类
yml
校验token
引入依赖
校验工具类
远程调用封装(细节)
0 条评论
下一页