gpt4 book ai didi

oauth - 客户端ID或JSON Web token 中的多个受众

转载 作者:行者123 更新时间:2023-12-04 03:57:27 25 4
gpt4 key购买 nike

我在我的应用程序中使用JWT实现OAuth 2.0,并且无法确定设置为aud声明的内容。用户将通过我的身份验证服务器“登录”到我的客户端,以访问我的API(资源)服务器。我希望我的 token 仅对特定的客户端和特定的API有效。

authentication flow

从我的客户端登录时,我不在请求中包括client_id,但在most implementations I've found中,aud设置为该client_id。我倾向于在我的登录请求中包含一个客户audience_id字段,然后将 token 中的aud设置为client_idaudience_id的数组,但这感觉仅意味着该 token 对这两个audiences均有效让我认为我应该只添加一个称为client的自定义声明,以明确声明此 token 是为特定客户端创建的。

我没有在OAuth登录请求中遇到任何同时包含client_idaudience_id的在线实现,也没有看到client in the spec的保留声明。

我在这里想念什么吗?

在JWT中专门声明不同的client_idaudience_id的最佳实践是什么?

最佳答案

JWT的受众是资源服务器,因为在该服务器上将处理 token (即验证,检查和操作 token )。从RFC 7519,https://tools.ietf.org/html/rfc7519#section-4.1.3:

The "aud" (audience) claim identifies the recipients that the JWT is
intended for. Each principal intended to process the JWT MUST
identify itself with a value in the audience claim.
[...]
The interpretation of audience values is generally application specific.
[...]



因此,最佳实践是 aud应该标识资源服务器。

客户端只是 token 的演示者,最佳实践(即在OpenID Connect和一些新兴的OAuth 2.0扩展草案中)将 azp(授权演示者)用于该声明。从 http://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken:

azp
OPTIONAL. Authorized party - the party to which the ID Token was issued. If present, it MUST contain the OAuth 2.0 Client ID of this party. This Claim is only needed when the ID Token has a single audience value and that audience is different than the authorized party.
[...]



因此,最佳实践是 azp标识客户端。

关于oauth - 客户端ID或JSON Web token 中的多个受众,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32013835/

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