@Component(value="jwtSecurityUtils") public class JwtSecurityUtils extends Object implements org.springframework.beans.factory.InitializingBean
在本模块中设计了一种对应关系用于记录:用户与refresh token,token与refresh token的映射。 其中,用户-->refresh token是一对多的关系,token-->refresh token是一对一的关系。 本模块采用redis有序set来记录:用户-->refresh token这种关系, 当发生用户权限变更需要强制使对应用户的token失效时, 可通过删除用户-->refresh token这种关系以达到目的, 另外在redis有序set中可将refresh token的签发时间作为score, 以便查询refresh token的签发时间。
限定符和类型 | 字段和说明 |
---|---|
static String |
ACCESS_TOKEN_SUBJECT |
static String |
REFRESH_TOKEN_SUBJECT |
构造器和说明 |
---|
JwtSecurityUtils(JwtSecurityProperties jwtSecurityProperties) |
限定符和类型 | 方法和说明 |
---|---|
void |
afterPropertiesSet() |
JwtToken |
createRefreshToken(JwtAuthData jwtAuthData,
Integer refreshTokenValidityInDays,
String appKeyAndSecret)
创建jwt refresh token
|
org.springframework.security.core.Authentication |
getAuthentication(String token,
String appKey)
获取认证信息
|
JwtAuthData |
getJwtAuthData(String token,
String appKeyAndSecret)
解析token,获取认证权限基础数据
|
AccessTokenAuthData |
getJwtAuthDataFromAccessToken(String token,
String appKeyAndSecret)
获取AccessToken权限数据
|
String |
getJwtAuthDataFromToken(io.jsonwebtoken.Claims claims,
String subject)
从token中提取出认证权限数据
|
String[] |
getWithoutJwtSecurityApi()
获取不需要认证的接口列表
|
boolean |
isEnableJwtSecurity()
是否启用认证授权机制
|
void |
kickedOffline(String id)
强制token下线
|
void |
kickedOffline(String type,
Long id)
强制认证对象下线
|
JwtToken |
loadTokenByRefreshToken(String refreshToken,
Integer tokenValidityInSeconds,
String appKeyAndSecret)
通过refresh token换取token
|
public JwtSecurityUtils(JwtSecurityProperties jwtSecurityProperties)
public void afterPropertiesSet()
afterPropertiesSet
在接口中 org.springframework.beans.factory.InitializingBean
public boolean isEnableJwtSecurity()
public String[] getWithoutJwtSecurityApi()
public JwtToken createRefreshToken(JwtAuthData jwtAuthData, Integer refreshTokenValidityInDays, String appKeyAndSecret)
jwtAuthData
- JWT认证权限数据refreshTokenValidityInDays
- refreshToken有效期,以天为单位appKeyAndSecret
- 组成格式:appKey:appSecret,为空则采用默认密钥生成签名keypublic JwtToken loadTokenByRefreshToken(String refreshToken, Integer tokenValidityInSeconds, String appKeyAndSecret)
refreshToken
- refresh tokentokenValidityInSeconds
- accessToken有效期,以秒为单位appKeyAndSecret
- 组成格式:appKey:appSecret,为空则采用默认密钥生成签名keypublic org.springframework.security.core.Authentication getAuthentication(String token, String appKey)
token
- appKey
- public JwtAuthData getJwtAuthData(String token, String appKeyAndSecret)
token
- appKeyAndSecret
- 组成格式:appKey:appSecret,为空则采用默认密钥生成签名keypublic void kickedOffline(String type, Long id)
type
- 认证对象类型id
- 认证对象标识public void kickedOffline(String id)
id
- token idpublic String getJwtAuthDataFromToken(io.jsonwebtoken.Claims claims, String subject)
claims
- subject
- public AccessTokenAuthData getJwtAuthDataFromAccessToken(String token, String appKeyAndSecret)
token
- jwt对应的加密串appKeyAndSecret
- 组成格式:appKey:appSecret,为空则采用默认密钥生成签名key