安全
作者:唐亚峰 | battcn
字数统计:448 字
导入核心包
本系统基于 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 生成方式
开启配置
核心代码: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/**
自定义登录类型
默认支持OAuth2.1 标准的登录模式
登录类型扩展
实现 IntegrationAuthenticator
接口即可自定义N种基于 grant_type:custom
方式的自定义登录,该项目默认提供了基于用户名密码和图文验证码方式,微信/短信可以参考图文依样画葫芦
java
@Slf4j
@Component
public class XXXXXXAuthenticator implements IntegrationAuthenticator {
@Override
public void prepare(IntegrationAuthentication integrationAuthentication) {
// 你的验证逻辑处理(比如参数合法性、验证码是否合法 等等)
}
@Override
public UserInfoDetails authenticate(IntegrationAuthentication integrationAuthentication) {
// 你的查询逻辑,最终返回 UserInfoDetails 就可以
}
}
客户端配置使用
添加注解 @EnableOAuth2Client
标记当前项目为资源客户端
配置
yaml
extend:
oauth2:
client:
opaque-token:
type: redis
authorization-type: redis