什么是 JSON Web 密钥 (JWKS)?

28,874次阅读
没有评论

共计 1828 个字符,预计需要花费 5 分钟才能阅读完成。

JWT 或 JSON Web 令牌最常用于识别经过身份验证的用户并验证 API 请求。此验证过程的一部分需要使用加密密钥来验证 JWT 的完整性,以确保它没有被篡改。用于此过程的密钥集称为 JWKS 或 JSON Web 密钥集。在这篇博文中,我们将介绍 JWKS 是什么以及它们的使用方式。

什么是 JSON Web 密钥 (JWKS)?

JSON Web 密钥 (JWK) 是表示加密密钥的 JSON 数据结构。这些密钥主要用于验证 OAuth 流中的 JWT。JWK 旨在轻松交换,使其成为表示加密密钥的标准化且可互操作的格式。

JWKS 的结构

示例 JWKS 将具有以下布局:

{
"jwk":
  [
    {
     "alg":"RSA",
     "mod": "0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx 4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMs tn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2 QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbI SD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqb w0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw",
     "exp":"AQAB",
     "Kid":"2011-04-29"
    }
  ]
}

JWK 由 JWK 容器对象组成,该对象是一个 JSON 对象,其中包含 JWK 密钥对象数组作为成员。JWK 容器对象成员的值可以根据使用的算法而变化。上面的示例包含使用 RSA 算法的单个成员,并具有以下成员:

  • alg:该成员标识与密钥一起使用的加密算法。

  • mod:包含 RSA 公钥的模值。它是一个 base64 编码的

  • exp:RSA 公钥的指数值。它是 base64 编码的

  • Kid:密钥 ID 用于匹配特定密钥。在钥匙轮换期间,孩子习惯于在 JWK 中的一组钥匙中进行选择。

JWKS 如何运作?

为了确保 JWT 未被篡改,我们需要通过验证签名来验证其完整性。这需要一个与授权服务器用于初始签署 JWT 的私钥相对应的公钥。通常,可以通过查询授权服务器公开的端点(称为“JWKS 端点”)来检索 JWKS。

JWKS 运作示意图

使用 JWKS 的好处

  • 安全性:JWKS 通过集中密钥管理来实现关注点分离。这种隔离降低了意外暴露关键密钥的风险,并且与对密钥进行硬编码相比,这是一种更安全的方法。

  • 可扩展性:随着 Web 应用程序变得越来越复杂,以可扩展的方式管理加密密钥变得至关重要。JWKS 提供了一种处理密钥的标准化方法,随着应用程序的扩展简化了密钥分发和轮换。

  • 互操作性:JWKS 旨在跨不同平台和服务轻松交换。这种互操作性促进了身份验证生态系统各个组件之间的无缝集成。

JWKS 实施的注意事项

对于大多数用户来说,您将使用身份验证提供程序,并且不必处理设置授权服务器的问题,但如果您决定自己实现该流程,这里有一些提示,可确保您的系统在 JWKS 方面的安全:

  • 定期密钥轮换:经常轮换 JWKS 中表示的加密密钥,以最大程度地减少潜在密钥泄露的影响。

  • 访问控制:将对 JWKS 端点的访问限制为仅授权客户端,并实施适当的访问控制机制。

  • 安全密钥存储:采用硬件安全模块 (HSM) 或基于云的密钥管理服务 (KMS) 等行业标准实践,安全地存储加密密钥。

结论

在身份验证方面,有许多术语和协议,当您刚开始使用时可能会感到困惑。我们希望通过本文,您可以更好地了解 JWKS、它与 JWT 的相关性以及它们的使用方式。

文章来源地址 https://www.toymoban.com/diary/system/558.html

到此这篇关于什么是 JSON Web 密钥 (JWKS)?的文章就介绍到这了, 更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持 TOY 模板网!

原文地址:https://www.toymoban.com/diary/system/558.html

如若转载,请注明出处:如若内容造成侵权 / 违法违规 / 事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于1970-01-01发表,共计1828字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)