问题描述
我想实现一个 OpenID Connect 服务器,我不知道我应该如何为客户端管理 JWK?只需一个 JWK 即可为所有 JWT 令牌签名或为每个客户端生成 JWK? 感谢任何帮助我的教程链接。
解决方法
每个客户都应该有自己的 JWK。 OpenID Connect Dynamic Client Registration 1.0 将 jwks
和 jwks_ur
定义为客户端元数据。
好的,我研究了一下,我得到的是这个:
-
Google 使用单个端点来获取其 JWK 并验证签名。不管是什么客户。
-
Auth0 为每个租户使用一个私钥,因此它为该租户中的所有客户端使用一个公钥/私钥。
-
Keycloak 每个领域使用一个密钥。因此该领域中的所有客户端都使用该单个公钥。
我的结论 如果我们的 OP 是多租户的,则每个租户的公钥/私钥可以是唯一的,否则对所有客户端使用单个公钥/私钥对。请注意,我们也应该有密钥轮换。