什么是 JSON Web 密钥 (JWKS)?

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

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

领支付宝红包 赞助服务器费用
AI生成的代码我们是否需要进行更多的测试?
上一篇 2023年11月25日 11:06
什么是微前端架构?
下一篇 2023年11月25日 11:22

相关文章

  • Web应用JSON数据保护(密码算法、密钥、数字签名和数据加密)

    1.JSON(JavaScript Object Notation) JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。JSON通过简单的key-value键值对来描述数据,可以被广泛用于网络通信、数据存储等各种应用场景,被广泛应用于互联网前后端数据交互与传输之中。 例如,

    2024年03月23日
    浏览(42)
  • 什么是JWT(JSON Web Token)?

    JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在网络应用间传递信息的安全传输方式。它通过数字签名来验证信息的合法性,并且具有自包含性,即它包含了足够的信息以供验证和识别。 JWT通常由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。 1. 头部(

    2024年02月12日
    浏览(48)
  • keycloak~使用jwks验证token的合法性

    keycloak提供了jwks服务,其地址可以在 /auth/realms/fabao/.well-known/openid-configuration 的返回结果中找到, jwks_uri 它表示了公钥的颁发者,可以使用颁发出来的公钥来验证token的签名,基地址也是固定的 /auth/realms/fabao/protocol/openid-connect/certs 。 jwt的解析以来于 java-jwt 包,由jwks服务解析

    2024年04月23日
    浏览(31)
  • keycloak~jwks-rsa中使用的设计模式

    com.auth0.jwk组织下面的jwks-rsa包,主要实现的是通过公钥对jwt的签名进行验证,在这个包中,它使用了 包装器 的设计模式,对默认的jwks提供者添加了一缓存的支持,通过建立一个 GuavaCachedJwkProvider 类,传入一个默认的 UrlJwkProvider 来将这个Provider进行包装,让它具有缓存的能力

    2024年04月23日
    浏览(31)
  • 什么是API密钥及其安全使用指南?

    应用编程接口(API)密钥是应用编程接口用来识别调用应用程序或用户的唯一代码。API密钥用于追踪和控制API的使用者及其使用方式,并验证和授权应用程序,其运作原理与用户名和密码相似。 API密钥以单一密钥或一组多个密钥的形式出现。用户应该遵循最佳实践,改善整体安

    2024年04月22日
    浏览(39)
  • 为什么Git需要配置ssh密钥,怎么配置?

    如果不设置 ssh 公钥每次提交代码就要输入你的帐号密码。如果设置了公钥之后你的机器和 github或者gitee 通信的时候, github或者gitee可以通过公钥识别出你是可信赖用户,这样就不需要每次 git 和 github或者gitee 通信的时候都要输入密码了。 SSH是一种网络协议,用于计算机之间

    2024年02月08日
    浏览(48)
  • JSON是什么?认识 json

    目录 一 Json定义 二 Json语法规则 三 json 的代码演示 轻量级的文本数据交换格式 具有自我描述性【看到某个Json数据就能知道它的特点】 比xml传输速度快【跨平台】 (1)语法 两种数据结构:对象和数组 大括号内为对象 中括号内为数组 对象中的数据由名称/值对构成 值的类

    2024年02月09日
    浏览(62)
  • JSON Web Token

    JWT: 概念: 通过 JSON 形式作为 Web 应用中的令牌,用于在各方之间安全地将信息作为 JSON 对象,安全地传输信息 在数据传输过程中可以对数据进行加密,签名等处理 开销小,可在多种域中使用 授权 一旦用户登录,每个后续请求将包括 JWT ,从而允许用户访问该令牌允许的路

    2024年02月15日
    浏览(43)
  • Json Web Token(JWT)

    JSON Web Token (JWT) 是一个开放标准 ( RFC 7519 ),它定义了一种紧凑且自包含的方式,用于在各方之间以 JSON 对象的形式安全传输信息。此信息可以验证和信任,因为它是数字签名的。JWT 可以使用密钥(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。 1.Authorization(授权):

    2024年02月19日
    浏览(59)
  • JWT json web token

    jwt(json web token) 主要是做鉴权用的登录之后存储用户信息 下面这段就是生成的token(令牌) eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNjg3Njc0NDkyLCJleHAiOjE2ODc3NjA4OTJ9.Y6eFGv4KXqUhlRHglGCESvcJEnyMkMwM1WfICt8xYC4 JWT是三部分组成的 头部(Header):头部通常由两部分组成:令牌的类型(即 “JW

    2024年02月10日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包