这是我的服务类方法中基于传递的auth令牌获取jwt令牌的代码。
NimbusJwtDecoder decoder = (NimbusJwtDecoder) JwtDecoders.fromOidcIssuerLocation(userTokenUrl);
Jwt jwt = decoder.decode(authResponse.authenticationResult().idToken());
Map<String, Object> claims = jwt.getClaims();
if(!ACTIVE.equals(claims.get(CUSTOM_STATUS).toString())) {
throw new IllegalArgumentException("User is not active");
}
我想为这个服务类方法编写一个junit。我尝试了以下方法,但在尝试解码令牌id illegalargumentexception时出错:尝试解码jwt时出错:已签名jwt被拒绝:需要另一个算法,或未找到匹配的密钥
NimbusJwtDecoder decoder = mock(NimbusJwtDecoder.class);
when(decoder.decode(ArgumentMatchers.anyString()))
.thenReturn(Jwt.withTokenValue(getToken()).header("typ", "JWT").header("alg", "HS256").claim("custom:status", "active").build());
1条答案
按热度按时间6ju8rftf1#
我不确定这是可行的解决方案,但这对我来说是可行的。我通过提取jwt解码器代码来重构代码。我创建了一个返回jwt对象的新方法。
我在我的测试课上模仿这个方法。