百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

理解 JWKS(JSON Web 密钥集)(jwt 密钥)

myzbx 2025-07-24 20:21 6 浏览

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

什么是JSON Web Keys(JWKS)?

JSON Web Keys(JWKs)是表示加密密钥的JSON数据结构。这些密钥主要用于在OAuth流程中验证JWT。JWKs旨在易于交换,使它们成为表示加密密钥的标准化和可互操作的格式。

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容器对象组成,它是一个包含JWK密钥对象数组的JSON对象。JWK容器对象成员的值可以根据使用的算法而改变。上面的示例包含一个使用RSA算法的单个成员,并具有以下成员:

  • alg :此成员标识与密钥一起使用的加密算法。
  • mod :包含RSA公钥的模值。它是base64编码的。
  • exp :RSA公钥的指数值。它是base64编码的。
  • kid :密钥ID用于匹配特定密钥。在密钥轮换期间,kid用于在JWK中选择一组密钥。

JWKS如何工作?

为了确保JWT没有被篡改,我们需要通过验证签名来验证其完整性。这需要与授权服务器使用的私钥对应的公钥。通常,可以通过查询授权服务器暴露的端点来检索JWKS,这个端点被称为“JWKS端点”。

使用JWKS的好处

  • 安全性 :JWKS通过集中密钥管理实现了关注点的分离。这种分离减少了意外暴露关键密钥的风险,与硬编码密钥相比,这是一种更安全的方法。
  • 可扩展性 :随着Web应用程序的复杂性增加,以可扩展的方式管理加密密钥变得至关重要。JWKS提供了一种标准化的处理密钥的方式,简化了应用程序扩展时的密钥分发和轮换。
  • 互操作性 :JWKS旨在在不同平台和服务之间轻松交换。这种互操作性促进了认证生态系统各个组件之间的无缝集成。

JWKS实施的考虑事项

对于大多数用户来说,您将使用认证提供程序,不必处理设置您自己的授权服务器,但如果您决定自己实现流程,以下是一些确保系统安全性的关于JWKS的建议:

  • 定期密钥轮换 :频繁地轮换JWKS中表示的加密密钥,以最小化潜在密钥泄露的影响。
  • 访问控制 :限制对JWKS端点的访问,只允许授权的客户端,并实施适当的访问控制机制。
  • 安全密钥存储 :安全地存储加密密钥,采用硬件安全模块(HSM)或基于云的密钥管理服务(KMS)等行业标准做法。

结论

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

相关推荐

大白话讲nnvm(大白话讲解什么是卷积)

之前工作经验中,在某大厂,开发过机器学习框架,在和业务同学的合作下,取得还可以的成绩,但是一直觉得缺少了什么,最近在刷ai-system相关的公开课,才明白计算图的重要性,以往觉得不能理解的东西,现在...

Python之Json模块详解(python.json()用法)

Step1:Json是什么JSON(JavaScriptObjectNotation,JS对象标记)是一种轻量级的数据交换格式。具有数据格式简单,读写方便易懂等很多优点。许多主流的编程语言都...

最新潮最流行的影音资源——MAU影视

MAO影视,一款完全免费的影视软件,为您带来最新潮最流行的影音资源,软件本身并不具备任何资源,只是作为一款播放器提供给大家。配合相关的接口链接,即可为您呈现丰富多彩的影音节目。软件版本支持:1.安卓2...

Python版的迷你程序——json文件转换为csv

浅话C语言是过去几十年软件和硬件两个阵营之间,签署的最坚实的契约。硬件为C语言的语义提供了最能发挥其性能的基础构件,而软件虽然搞了很多的圆环套圆环般的层次,但最终都以C语言作为最后的沉淀收尾。----...

没硬盘、网盘也能看片自由!NAS一键部署MoonTV,随时随地爽看。

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:羊刀仙有没有一个应用服务,能满足既没有足够预算购置硬盘,也不想依托网盘的朋友的家庭观影需求?之前我介绍过LibreTV,本篇再来看看另一个更...

用云存储30分钟快速搭建APP,你信吗?

背景不管你承认与否,移动互联的时代已经到来,这是一个移动互联的时代,手机已经是当今世界上引领潮流的趋势,大型的全球化企业和中小企业都把APP程序开发纳入到他们的企业发展策略当中。但随着手机APP上传的...

Python的dict和json区别(python中dict的特点)

大家有没有发现,python中的字典类型的数据结构,和我们目前比较流行的web端的json格式,非常类似,几乎有点分不清了。那么这2者的区别是什么呢?首先,从概念上,我们要理解这2者是截然不同的。py...

越晚搞懂 MySQL JSON 数据类型,你就越吃亏

作者介绍陈臣,甲骨文MySQL首席解决方案工程师,公众号《MySQL实战》作者,有大规模的MySQL,Redis,MongoDB,ES的管理和维护经验,擅长MySQL数据库的性能优化及日常操作的原理剖...

揭秘你不会画“信息结构图”的本质

编辑导语:产品信息结构图有助于清晰地展示产品信息,一定程度上可以为后台上传数据提供依据,但不少人可能觉得产品信息结构图很难,这可能是对数据库表结构不理解等因素导致的。本篇文章里,作者就产品信息结构图的...

python之json基本操作(.json python)

1.概述JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它具有简洁、清晰的层次结构,易于阅读和编写,还可以有效的提升网络传输效率。Python标准库的...

JWT 和 JJWT 还傻傻的分不清吗(jwt jti)

JWTs是JSON对象的编码表示。JSON对象由零或多个名称/值对组成,其中名称为字符串,值为任意JSON值。JWT有助于在clear(例如在URL中)发送这样的信息,可以被信任为不可读(即加密的)、...

比json快20-100倍!protobuf原理深入剖析

一、protobuf语法指南1.1定义一个消息类型先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所在的页数,以及每一页多少条查询结...

了解一下ProtoBuf(了解一下相亲对象的年龄)

序列化与反序列化我们在进行网络通信调用的时候,总是需要将内存的数据块经过序列化,转换成为一种可以通过网络流进行传输的格式。而这种格式在经过了传输之后再经过序列化,能还原成我们预想中的数据结构。那么我们...

JSON数据类型详细总结(json数据类型详细总结怎么写)

JSON详解一、JSON的概述及其使用JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。它基于javascript的一个子集。JSON是的数据交换语言,易...

接口自动化测试之JSON Schema模式该如何使用?

JSONSchema模式是一个词汇表,可用于注释和验证JSON文档。在实际工作中,对接口返回值进行断言校验,除了常用字段的断言检测以外,还要对其他字段的类型进行检测。对返回的字段一个个写断言显...