gpt4 book ai didi

validation - 如何共享 OAuth2 JWT 验证的公钥?

转载 作者:行者123 更新时间:2023-12-04 11:37:42 31 4
gpt4 key购买 nike

我正在实现一个连接到 OAuth2 服务器的应用程序,它会返回一个 Json Web token (JWT)。我正在传递 token ,并且我想独立验证 token 是否来自发行源。

我可以使用来自发行源的公钥来做到这一点,没问题。我现在可以使用它。一切正常。

但是如果 OAuth 服务器更改了签名 key 怎么办?验证应用程序如何获取新 key ?是否有从 OAuth2 服务器共享公钥的“最佳实践”约定?我们只是从身份验证服务器上的端点公开它吗?

最佳答案

没有标准化的解决方案作为 OAuth 2.0 协议(protocol)套件的一部分(今天)。
它被认为是一个单域问题,可以通过各种方式解决,这些方式被认为超出了核心 OAuth 规范的范围(很像资源服务器和授权服务器之间的 API is/was),很像任何基于 PKI 的机制在今天普遍有效。
但是 OpenID Connect 是一个建立在 OAuth 2.0 之上的跨域 SSO 协议(protocol),它还定义了一个更标准化的选项,以 JWKs URI 的形式处理 key 分发作为 Discover 的一部分,请参阅 jwks_uri进入:

REQUIRED. URL of the OP's JSON Web Key Set [JWK] document. Thiscontains the signing key(s) the RP uses to validate signatures fromthe OP. The JWK Set MAY also contain the Server's encryption key(s),which are used by RPs to encrypt requests to the Server. When bothsigning and encryption keys are made available, a use (Key Use)parameter value is REQUIRED for all keys in the referenced JWK Set toindicate each key's intended usage. Although some algorithms allow thesame key to be used for both signatures and encryption, doing so isNOT RECOMMENDED, as it is less secure. The JWK x5c parameter MAY beused to provide X.509 representations of keys provided. When used, thebare key values MUST still be present and MUST match those in thecertificate.


这将通过受 HTTPs 保护的 channel 公开 key Material ,有效地利用 SSL CA 发布和翻转 JWT 签名 key Material 。
在某些时候 jwks_uri定义也可能是标准化 OAuth 2.0 协议(protocol)扩展的一部分,但现在您必须依赖客户端和授权服务器之间的自定义协议(protocol)才能做到这一点。不过,这可能并不难实现自己。
如果您的授权服务器恰好也是一个 OpenID Connect 提供者,并且使用相同的 key Material 来签署 ID token 和 JWT 访问 token ,那么您可能会很幸运。
2019 年 4 月 22 日更新:授权服务器元数据文档现在也标准化了它自己的 OAuth 2.0 扩展 OAuth 2.0 授权服务器元数据 RFC8414

关于validation - 如何共享 OAuth2 JWT 验证的公钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30064795/

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