gpt4 book ai didi

jwt - 使用 JWKs 端点处理 JWT token

转载 作者:行者123 更新时间:2023-12-02 01:33:58 25 4
gpt4 key购买 nike

我收到两个 JWT:一个 OpenID Connect ID token (id_token) 和一个访问 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();

问题是如何继续使用访问 token 。我可以从中提取 userId 和 userDetails,但我想我还需要验证它?

如果我尝试以与 ID token 相同的方式验证访问 token ,则会收到此错误:

UnresolvableKeyException: Unable to find a suitable verification key for JWS w/ header {"alg" : "RS256", "kid":"1"}

确实没有“kid”:“1”的键,而且这个值“1”似乎有点奇怪?

我做错了什么吗?

最佳答案

听起来您正在实现 OpenID Connect 客户端或依赖方的角色。 ID token 和访问 token 这两个 token 具有不同的用途,因此客户端应以不同的方式处理。 ID token 适用于客户端,可在客户端对最终用户进行身份验证。在允许最终用户进入之前,客户端必须验证 ID token (验证签名并验证 exp 和 aud 等声明)。但是,访问 token 供客户端用于访问资源或 API,但不用于访问 token 。直接供客户端使用或验证。访问 token 对客户端来说是不透明的,客户端不应该关心或了解其详细信息。事实上,访问 token 并不总是 JWT。在 OpenID Connect 中,访问 token 用于调用用户信息端点(使用 HTTP header ,Authorization: Bearer [access token])以获取有关最终​​用户的更多声明/信息。

“1”的值对于 child 来说是完全合法的,但它指的是 AS/OP 和用户信息端点以某种方式知道的 key 。它不是 OpenID Connect JWKS 端点处的 key 。 “1”不是客户端需要知道的 key ,因为客户端不应该直接验证访问 token 。

关于jwt - 使用 JWKs 端点处理 JWT token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32233815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com