TOKEN 管理
作者:唐亚峰 | battcn
字数统计:398 字
导入核心包
本系统基于 Spring官方
提供的最新SDK spring-security-oauth2-authorization-server:1.1.2
集成封装,简化开发者使用,提供的扩展配置请开发者自行看注释
即便不用全部的架构体系,只用oauth2-spring-boot-starter
也可以轻松自定义 自己内部的oauth2 系统架构
xml
<dependency>
<groupId>com.wemirr.framework</groupId>
<artifactId>oauth2-spring-boot-starter</artifactId>
</dependency>
Token 更换
默认采用的 JWT 作为令牌生成器,但是对于无状态的令牌来说加上 Redis
做状态管理违背了 JWT
的设计初衷,对Redis Key 也不够友好,那么就可以考虑使用自定义的 TOKEN 策略了,默认实现了以 UUID 生成方式
开启配置
注意
当你开启自定义 TOKEN 后,需要将 oauth2_registered_client.token_settings
内容修改一下
shell
{
"@class": "java.util.Collections$UnmodifiableMap",
"settings.token.reuse-refresh-tokens": true,
"settings.token.id-token-signature-algorithm": [
"org.springframework.security.oauth2.jose.jws.SignatureAlgorithm",
"RS256"
],
"settings.token.access-token-time-to-live": [
"java.time.Duration",
7200
],
"settings.token.access-token-format": {
"@class": "org.springframework.security.oauth2.server.authorization.settings.OAuth2TokenFormat",
// 如果是 JWT TOKEN 则需要调整成 self-contained
"value": "reference"
},
"settings.token.refresh-token-time-to-live": [
"java.time.Duration",
604800
],
"settings.token.authorization-code-time-to-live": [
"java.time.Duration",
300
],
"settings.token.device-code-time-to-live": [
"java.time.Duration",
300
]
}
核心代码:CustomOAuth2AccessTokenGenerator
重点是 oauth2_registered_client.token_settings.settings.token.access-token-format=reference
yaml
extend:
oauth2:
server:
# 自定义 TOKEN
token-type: custom
服务端配置使用
添加注解 @EnableOAuth2Server
标记当前项目为鉴权服务端
yaml
extend:
oauth2:
server:
type: redis
registered-client: jdbc
consent: jdbc
token-type: jwt
ignore:
# 配置权限过滤的地址
resource-urls:
- /captcha
- /instances/**
客户端配置使用
添加注解 @EnableOAuth2Client
标记当前项目为资源客户端
配置
yaml
extend:
oauth2:
client:
opaque-token:
type: redis
authorization-type: redis