我收到两个 JWT:一个 OpenID Connect ID 令牌 (id_token) 和一个访问令牌 (access_token)。OpenID 的情况或多或少很清楚 - 我可以使用 JWKS 端点对其进行验证:https ://smth.com/JWKS 。
如示例(https://bitbucket.org/b_c/jose4j/wiki/JWT%20Examples):
HttpsJwks httpsJkws = new HttpsJwks("https://smth.com/JWKS");
HttpsJwksVerificationKeyResolver httpsJwksKeyResolver = new HttpsJwksVerificationKeyResolver(httpsJkws);
jwtConsumer = new JwtConsumerBuilder()
.setVerificationKeyResolver(httpsJwksKeyResolver)
.setExpectedAudience(...)
.setExpectedIssuer(...)
.build();
问题是如何继续使用访问令牌。我可以从中提取 userId 和 userDetails,但我想我还需要验证它吗?
如果我尝试验证与 ID 令牌相同的访问令牌,则会收到此错误:
UnresolvableKeyException:无法为带有标头 {"alg" : "RS256", "kid":"1"} 的 JWS 找到合适的验证密钥
而且确实没有键"kid" : "1"
,这个值也"1"
似乎有点奇怪?
我做错了什么吗?