Class JwksJWTGenerator
java.lang.Object
tech.riemann.nif.auth.jwt.JWTDecoder
tech.riemann.nif.oidc.service.jwt.JwksJWTGenerator
public class JwksJWTGenerator
extends tech.riemann.nif.auth.jwt.JWTDecoder
基于JWKS的JWT生成器
构造器由 @RequiredArgsConstructor 基于 final 字段生成:
JwksJWTGenerator(Supplier<String> jwksUriSupplier, long clockSkew)
使用示例:
JwksJWTGenerator generator = new JwksJWTGenerator(() -> "https://auth.example.com/.well-known/jwks.json", 60);
generator.init(); // 初始化加载JWKSet
if (generator.verify(token)) {
String subject = generator.subject(token);
// 使用subject进行业务逻辑
}
- Author:
- Kerbores(kerbores@riemann.tech)
-
Nested Class Summary
Nested classes/interfaces inherited from class tech.riemann.nif.auth.jwt.JWTDecoder
tech.riemann.nif.auth.jwt.JWTDecoder.JWTDecoderBuilder -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionlong返回令牌验证时钟容差(秒)voidinit()初始化并定期更新 JWK SetbooleanJWK Set 是否已就绪(可用性状态)com.nimbusds.jwt.JWT解析并验证 JWT token获取 JWT token 的主题(subject)verifiedSubject(String token) 验证并获取 JWT token 的主题(subject)boolean验证 JWT token 的有效性Methods inherited from class tech.riemann.nif.auth.jwt.JWTDecoder
builder, canEqual, equals, getJwk, getKeyId, hashCode, isValidTimeClaims, key, setClockSkewSeconds, setJwk, setKeyId, toString, verifiedPayload, verify
-
Constructor Details
-
JwksJWTGenerator
public JwksJWTGenerator()
-
-
Method Details
-
getClockSkewSeconds
public long getClockSkewSeconds()返回令牌验证时钟容差(秒)覆写父类
JWTDecoder.getClockSkewSeconds(),返回子类构造传入的容差值, 使JwksJWTGenerator#verify与OpenIDConnectService#verifyIdToken使用一致的可配置容差- Overrides:
getClockSkewSecondsin classtech.riemann.nif.auth.jwt.JWTDecoder- Returns:
- 时钟容差(秒)
-
init
初始化并定期更新 JWK Set此方法在 Bean 初始化时执行一次,然后每 10 分钟执行一次,用于加载和更新 JWK Set
-
isJwksReady
public boolean isJwksReady()JWK Set 是否已就绪(可用性状态)获取成功 jwkSet 非 null;获取失败或定时刷新失败时保持原样(可能为 null 或旧值)
- Returns:
- true 表示当前持有可用的 JWK Set
-
verify
验证 JWT token 的有效性- Overrides:
verifyin classtech.riemann.nif.auth.jwt.JWTDecoder- Parameters:
token- JWT token 字符串- Returns:
- 如果 token 验证通过则返回 true,否则返回 false
-
parse
public com.nimbusds.jwt.JWT parse(String token) throws ParseException, com.nimbusds.jose.JOSEException 解析并验证 JWT token- Parameters:
token- JWT token 字符串- Returns:
- 解析并验证通过的 JWT 对象
- Throws:
ParseException- 解析 token 时发生的异常com.nimbusds.jose.JOSEException- JWT 相关操作发生的异常IllegalArgumentException- 当 JWK 未找到或验证失败时抛出
-
subject
-
verifiedSubject
-