问题标签 [jwk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1294 浏览

jwt - 如何在 nimbus-jose-jwt 中使 RemoteJWKSet 的缓存无效

我们正在使用nimbus-jose-jwt 第三方库中的 RemoteJWKSet 进行基于 JWKS 端点的 JWT 验证

使用 RemoteJWKSet,我们可以从远程端点检索 JWKS,并缓存检索到的 JWK 集,以最大限度地减少网络调用。它还能够在远程服务器上处理密钥轮换,因为每当密钥选择器尝试获取具有未知 KID 的密钥时,缓存都会更新。

我的问题是,假设由于安全原因,从远程 JWKS 端点中删除了一个特定的密钥集。但是当我们得到一个使用移除的密钥签名的 JWT 时,它仍然是有效的,因为该密钥集在缓存中可用(RemoteJWKSet 只会在它获得具有未知 KID 的令牌时更新缓存)。

我需要知道是否有任何可能的方法来使 RemoteJWKSet 中的缓存 JWK 集无效(如果需要重新启动服务器)?

0 投票
0 回答
725 浏览

jwt - 使用 https://jwt.io/ 使用 RSA 密钥签署 JWT 时签名无效

嗨,我正在通过 POSTMAN 测试一些 api。

  1. REGISTRATION API-它需要公钥并存储在服务器中。要获取我正在使用的公共 JWK 密钥https://mkjwk.org/。它生成带有公钥和私钥的密钥。以下是生成的密钥:

    }

我只向这个 API 发送公钥部分,这个 API 工作正常。

  1. 使用 JWT API 获取访问令牌 - 这需要一个 JWT,它将使用一些声明创建。我们必须使用 RSA 公钥和私钥对其进行签名。我在签署 JWT 时遇到问题。要从 JWK 上方获取公钥和私钥的文本/pem 版本,我使用的是https://8gwifi.org/jwkconvertfunctions.jsp. 这给了我们下面的公钥和私钥。

    /li>

我正在使用这些键并转到https://jwt.io/,然后使用我所需的值更新 Header 和有效负载。标题:

有效载荷:

在此之后,当我从上面签署包括公钥和私钥的 JWT 时,它不会生成 JWT 令牌并给出“无效签名”错误。所以我无法生成作为第二个 API 输入所需的签名 JWT。

PS-我现在处于测试阶段。所以我没有编写任何代码来测试 api 并且只使用在线生成器工具。

请让我知道如何解决这个问题。

0 投票
1 回答
669 浏览

python - 如何使用 python_jwt 验证 firebase 令牌

我已经搜索了从 firebase 会话中获取令牌并实际验证它的任何真实示例。我看到了一些使用 python-jose 的示例,但想要一个使用 python_jwt 的工作示例。有很多示例可以对其进行解码,但我没有看到端到端验证示例

0 投票
1 回答
5905 浏览

python - 如何从 RSA 密钥对创建 JWK?

假设我有一个表示 RSA 密钥对的 python 结构,如下所示:

如何编写 python 代码来生成可用于验证使用此 RSA 私钥签名的 JWT 的 JWK?使用的算法是 RSA256。

这个网站mkjwk完成了我正在尝试做的事情。但我试图用python代码来做。

0 投票
1 回答
1175 浏览

python - 为什么我不能用我的 JWK 签署这些声明?

我正在编写这个 python 代码来创建 RSA 私钥和公钥。然后从私钥创建一个 JWK,然后使用该 JWK 签署声明。

当我运行它时,它在签名步骤失败:

是什么导致了这个错误,我怎样才能使它工作?

0 投票
2 回答
1618 浏览

jwt - 将 spring-security-oauth2 授权服务器与 child 和 JWKS 一起使用?

按照这里那里的文档,我设法设置了一个授权服务器,它发出使用非对称密钥签名的 JWT 访问令牌,资源服务器使用公钥的本地副本在本地验证这些令牌。到目前为止,一切都很好。

我的最终目标是让资源服务器在授权服务器上使用 JWKS 端点,并使用 JWT 中的“kid”标头在 JWKS 中查找正确的密钥并在本地验证,支持密钥轮换。我发现了如何让授权服务器公开一个 JWKS 端点,以及如何为资源服务器指定 key-set-uri

不过好像没有办法

  • 在 JWKS 中发布孩子(密钥 ID)值
  • 在 JWT 中包含 child 标头

有没有办法做到这一点?

0 投票
2 回答
2065 浏览

php - 如何为open id connect生成一个众所周知的配置文件?

我们有一个 openid connect 的实现,它返回一个编码的 id 令牌,这很好用并且已经工作了一段时间。但是,我们正在尝试在 aws 中使用 cognito 连接到它,经过一些试验和错误,我们发现我们缺少一个 .well-known/openid-configuration 文件。

该文件旨在包含有关对我们拥有的 openid-connect 服务器的调用的信息,包括 JWK 密钥。

我不明白 JWK 密钥,这意味着: 1. 如何生成它们 2. 生成后如何处理它们?3. 我们现有的 openid-connect 代码是否需要更改和使用 JWK 密钥?4. 有什么方法可以验证 openid-connect 配置吗?

不久前我问过类似的问题,但无济于事,只能重新访问。

谢谢凯文

我已经尝试过的:去过这里:https ://mkjwk.org/并单击“新密钥”,它返回我认为是网络密钥的内容..但是不知道我打算用它做什么或那上面的其他标签是什么意思。

预期结果:期望 AWS Cognito 继续运行并允许它连接到我们的 open id connect 实施。目前只是收到关于缺少众所周知的配置文件的错误。

0 投票
0 回答
167 浏览

java - 签署密钥翻转和自然过期的访问令牌

我正在开发一个使用 Azure AD 作为我的 OAuth2.0 提供程序的应用程序。Azure 有一个带有多个公钥的 Jwks 端点,其中一个对应的私钥用于签署我的令牌。我的应用程序通过检查授权标头中的 keyid 并通过在缓存中查找来确定使用哪个密钥签署令牌来处理签名密钥解析。

我的应用程序每 5 分钟从端点获取密钥并将它们存储在缓存中,直到发生下一次获取。假设用户获得了一个用 Key#1 签名的令牌。如果 Key#1 被 Jwks 端点上的 key#2 换出,并且我的应用程序获取 Key#2 - 缓存它,然后尝试验证使用 Key#1 签名的令牌的签名,那么令牌验证显然会失败。

在达到令牌的自然过期时间之前,如何允许使用不再在 Jwks 端点上的密钥签名的令牌仍用于验证令牌?

0 投票
1 回答
401 浏览

.net - IdentityServer 中的多个 jwks

我不确定 IdentityServer 是如何产生 jwks 的。当我运行它时,我只能看到一组 jwks。我看到一些示例,例如https://login.microsoftonline.com/common/discovery/v2.0/keys它有多个 jwks。在这个 url 中,似乎 jwks 指的是租户。这是否意味着如果我将我的 IdentityServer 与 Google、Facebook 等其他 OpenId 提供商集成,我也可以拥有多个 jwks?

0 投票
1 回答
437 浏览

python - 从 azure python sdk JWK 生成 jwcrypto JWK

我正在使用azure-sdk从 Azure Key Vault 获取密钥。这将返回一个KeyBundle,它的key属性为azure.keyvault.v7_0.models.json_web_key_py3.JsonWebKey

对于我的代码的不同部分,我需要从jwcrypto JWK 制作签名令牌。该JWT.make_signed_token方法采用 JsonWebKey。从 Azure 返回的 JsonWebKey(我认为)实际上是同一个类,在不同的包中定义。

有没有办法将 Azure JWK 变成 jwcrypto JWK?我认为可以一个一个地转置所有属性,但想知道是否有更优雅的方式。

编辑:忘记包含版本...

  • 视窗 10
  • Python 3.6.5
  • jwcrypto 0.6.0
  • azure-keyvault 1.1.0 和 azure-mgmt-keyvault 1.1.0