RBAC用户角色权限模块
2022-05-05 16:04:34 36 举报
权限系统设计
作者其他创作
大纲/内容
权限系统查询存在用户
DefaultTokenServices
密码模式,需要验证用户密码
Filter4(AnonymousAuthenticationFilter)
网关
springSecurityFilterChain(FilterChainProxy)
用户
SecurityMetadataSource
权限组
Controller1
创建
6 访问接口带Token
浏览器客户端
4记录OpenId
8 跳转到业务系统,带授权token
5 登陆界面输入密码
AuthenticationEventPublisher
菜单权限关系
ImplicitTokenGranter简单模式模式
第三方平台
APIServer平台开放API
List<AuthenticationProvider>
除开密码模式外,直接生成
新用户
AccessDecisionManager
AuthorizationServerSecurityConfiguration(OAUTH2)资源服务校验EnableResourceServer
HttpServlet
主要对外外部系统不关心密码当然也可对内(不推荐)
0 访问业务系统
1 未登陆访问
Controller4(AuthorizationEndpoint)
【注】:登陆前都应该引导注册或创建用户
6 验证通过访问
AuthorizationCodeTokenGranter授权码模式
RefreshTokenGranterToken刷新
11 使用业务系统token正常访问业务系统
菜单表
PermissionServer
权限用户
手机/密码
业务数据
2 重定向到认证服务器,(参数包含登陆后重定回来的url)
2 密码登陆认证
AccountAuthenticationProvider
AuthenticationManager
2 业务系统记处理登陆结果
getOAuth2Authentication
Spring SecuritySpring Gateway
自定义SecurityConfiguration
APIServer开发子系统
授权Authorization
Filter1(WebAsyncManagerIntegrationFilter)
2.2 做为平台方--密码模式(过程)
用户信息
Authentication(UsernamePasswordAuthenticationToken)
3 访问接口带Token
OncePerRequestFilter
TokenStore
权限机构
1 OAUTH2 模式2 Spring Security3 Spring Security 与OAUTH2 结合
淘宝/支付宝
RBAC角色的权限访问控制
3 认证
第三方登陆授权
4 业务系统处理流程
角色
身份验证; 认证Authentication
Filter3(WebSecurityConfigurerAdapter)
Filter2(requestContextFilter)
不存在
业务模块新建用户
密码模式,密码校验成功后
岗位
角 色
3 权限模块设计
requiresAuthenticationRequestMatcher
3 获取第三方Token 和OpenId
createAccessToken
业务模块选择存在的用户
多端账号
AuthenticationProvider2(手机验证码)
4 访问接口带Token
Filter5(FilterSecurityInterceptor)
5 认证
所属机构
9 根据授权token,后台换取access token等信息
1 业务系统输入密码登陆
2 认证用户
TokenRequest
DispatcherServlet
Controller3
2授权码模式获取token
权限系统创建新用户
OAuth2Authentication
认证中心
TokenGranter(生成Token)
4.1 业务系统----普通登陆账号
数据权限关系
账号+密码+【验证码】
AuthorizationServer
FilterChainProxy2传统登陆/page/login)
授权码和简化模式,需要登陆
账号信息
AuthenticationProvider1(第三方登陆)
FilterChainProxy2OAUTH2认证/oauth/token
FilterChainProxy1OAUTH2 认证登陆/oauth/*
QQ/微信
8 验证通过访问
2.1 做为平台方--授权码/简单模式(过程)
继承
Filter2(hiddenHttpMethodFilter)
微博
6 应用--权限场景模式
AbstractTokenGranter
2 申请凭据
2.4 做为平台方--扩展登陆(补充)---客户端凭证(过程)
只能对内自行定义登陆界面会暴露密码
可相同
权限系统旧用户创建账号
元素权限组
机构角色关系
数据权限组
4 返回登陆界面
权限系统UNION判断
2 OAUTH2 模式节点使用情况
check token
菜单权限组
5 验证通过访问
FilterChainProxy
1 邮箱短/短信验证码/扫一扫等无密码身份证验证
Filter2(LogoutFilter)
直接登陆成功
ClientCredentialsTokenEndpointFilter
公司
登陆方式可多样化1 本地应用授权2 扫一扫授权3 账号短信验证码4 账号邮箱验证码5 账号密码
ProviderManager
账号
3 跳转认证服务器登陆界面
10 返回业务系统颁发的token
TokenEnhancer
5 鉴权
ClientCredentialsTokenGranter客户端模式
4.2 业务系统---第三方登陆账号
SecurityFilterChain(HttpSeciruty)
Filter1(ignore)
FilterChainProxy3API登陆/api/login)
1 第三方平台认证授权登陆
机构
1授权码模式返回授权码,2 简化模式直接返回token
1 权限核心思想
AuthenticationProvider3(账号密码)
多端(手机/QQ/微信)
权限系统新建账号
grant
ClientCredentialsTokenEndpointFilter(验证Client密码)
第三方系统授权登陆
OATH2 授权码模式介绍
AuthorizationEndpointSec登陆后颁发授权码/Token
AccountAuthenticationFilter
CompositeTokenGranter
元素表
引导操作
浏览器(客户端)
主要对内内部无校验
Filter1(ClientCredentialsTokenEndpointFilter)
Filter4
AuthenticationSuccessHandler跳转到登陆成功的页面
2.4 做为平台方--内部服务鉴权---客户端凭证(过程)
用户机构关系
Controller2(TokenEndpoint)
UserDetailsService
FrameworkServlet
ResourceOwnerPasswordTokenGranter密码模式
2.3 做为平台方--与第三方平台对接---客户端凭证(过程)
业务机构数据
3 认证用户
旧用户
Filter3(UsernamePasswordAuthenticationFilter)
1 登陆获取OATH2 AccessToken
手机号+验证码
密码模式和客户端模式
Filter1(characterEncodingFilter)
元素权限关系
1 整个平台,统一用户,用户可以使用那些app微信,小程序2 平台下有app,app下是各自独立的用户和账号多租户的场景统一登陆认证--外部1 进入业务系统APP2,点击使用APP1登陆2 登陆统一平台(应用APP1+账号用户),显示(APP1授权APP2)【或者平台用户(不属于子app的用户),直接登陆才能授权】3 跳转到APP2的页面界面。直接给登陆token,自己获取access token(或者多租户的场景,不支持给其他APP授权。)统一登陆认证--内部1 登陆统一平台(应用APP1+账号)2 给自己内部子系统认证3 跳转到APP1的页面界面。直接给登陆token,自己获取access token
Filter2(springSecurityFilterChain)
7 认证通过,重定向到业务系统,参数带授权token
Filter
Web Filter(ApplicationFilterChain)
业务系统
旧账号登陆授权
4 Token鉴权
5 Spring Security & OAUTH2原理
Handler Mapping(TokenEndpoint)
AuthenticationSuccessHandler生成JSON
URL表
已存在
SecurityContextHolder
PasswordEncoder
7 鉴权
Filter2(WebScoket Filter)
部门
6 提交密码到认证服务器
权限模块新建用户
业务系统创建用户
主要对内内部无校验只有第三方登陆的凭据
1 认证2 授权3 鉴权,决策4 赋权
TokenEndpoint
赋权管理赋予张山某角色
3种模式
1 用户直接绑定角色2 用户关联机构,机构关联角色。2.1 当前机构有角色,机构直接关联角色2.2 当前机构没角色,递归找父机构角色
OAuth2Request
OAuth2AccessToken
认证服务授权EnableAuthorizationServer
0 条评论
下一页