什么是jwks?刷新和访问令牌的 jwks 到底是什么?

Posted

技术标签:

【中文标题】什么是jwks?刷新和访问令牌的 jwks 到底是什么?【英文标题】:what is jwks? what actully does jwks with refresh and access tokens? 【发布时间】:2021-07-23 09:38:53 【问题描述】:

我正在开发一个具有访问和刷新令牌以及 JWTJWKS 的身份验证系统。我的问题是我不知道 JWKS 的功能是什么。在使用 JWT 并刷新令牌和访问令牌的身份验证系统中,JWKS 的功能是什么?这个系统中的公钥和私钥是什么? JWKS 需要连接数据库吗?

【问题讨论】:

【参考方案1】:

您是指JWKS 还是JWKS endpoint

JWKS 是 JSON Web 密钥集 - 用于共享公钥的 JSON 表示法,用于验证已签名 JWT 的签名。

JWKS endpoint 是授权服务器公开的端点,您可以从中获取 JWKS。

当您需要处理 JWT 的内容时(例如,您有一个接收 JWT 并需要执行授权决策的 API),您应该验证签名。为了验证它,您需要一个公钥,它对应于授权服务器用来签署 JWT 的私钥。可以通过不同的方式获取此公钥(例如,您可以在 API 中对其进行硬编码),并且从 JWKS endpoint 获取它是一种有效的方式。如果您可以选择从JWKS endpoint 读取公钥,我建议您使用它 - 这大大简化了系统中的密钥管理。每当您需要轮换密钥时,您只需在授权服务器中更改它们。如果您不控制授权服务器,这将特别有用 - 这样您就不必担心密钥轮换。

您可以查看此免费课程的第二部分:OpenID Connect in Details。 JWKS 主题在此处进行了介绍。

【讨论】:

以上是关于什么是jwks?刷新和访问令牌的 jwks 到底是什么?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Dot Net Core 中使用 JWKS 验证 JWT 令牌

OpenID Connect JWT 令牌验证和后端 api 的使用策略 - jwks 还是会话?

在给定 JWT 标头的情况下选择 JWKS 中的键

jwksError: Not Found 在 GET 请求期间由 jwks-rsa 模块抛出,带有授权不记名令牌到受保护的 api

如何在没有 x5c 的情况下从 jwks 验证 JWT 的签名

使用 Azure API 管理从身份提供者缓存 JWKS 以验证 JWT