gpt4 book ai didi

oauth-2.0 - JWK什么时候到期? JWKS 轮换政策

转载 作者:行者123 更新时间:2023-12-04 12:20:27 27 4
gpt4 key购买 nike

我正在阅读 JWKS 并找到有关 key 轮换概念的信息 - https://developer.okta.com/docs/concepts/key-rotation/
假设我在我的应用程序中使用 JWKS,但我不定期获取它们,所以只是硬编码。
单键 JSON 对象看起来像

{
"kty": "RSA",
"e": "xxx",
"use": "sig",
"kid": "xxx",
"x5t": "xx",
"x5c": [
"xxx"
],
"n": "xxx

}
JWKS 为您提供公钥,以便您可以验证 JWT。
现在提问。
  • JWKS 过期时是否可以获取信息?例如,我可以使用 JWK 生成 .cert 文件并打开它以检查到期日吗?
  • JWKS 提供程序是否在计划 key 轮换时公开信息,或者可能是敏感信息?

  • 请考虑上面的例子,所以我在应用程序中有 key ,想知道什么时候应该更换它们。
    当然我知道这是不好的做法(我应该直接从 JWKS 端点获取 key 并感到安全)但这只是一个例子(如果这是一个愚蠢的例子,请提出一个更好的例子来描述上下文)。

    最佳答案

  • JSON Web Key Set (JWKS aka JWK Set) 是 JSON Web Keys (JWKs) 的列表。由于 JWK Set 只是一个容器,它不包含任何元数据,例如过期日期/时间。
  • 它没有公开这一点,至少有两个原因:
  • RFC 7517是管理 JWK 和 JWK 集行为的规范。它没有提及或要求提供者发布到期日期/时间。也许这是由于原因#2:
  • 提供者应该能够随时出于任何原因删除 key 。可能的原因: key 已被泄露。 (对于私钥/公钥对,这意味着私钥已被泄露,应从流通中删除通过 JWKS 发布的相应公钥)。这个例子是一个异常值,但它确实发生了,提供者必须立即采取行动来修复它。

  • 尽管存在紧急情况,但出于良好的安全卫生考虑,提供商确实会定期轮换 key 。为了处理 key 轮换(无论是计划中还是紧急情况),您的应用程序应该遵循一个简单的算法。它应该定期从 JWKS 端点获取 key ,构建所有 key 的本地副本,并根据最后一次获取从该副本中添加/删除 key 。您的应用程序应仅使用在本地副本中找到的 key 来执行加密操作,例如验证 JWT 上的签名。
    每个 JWK 都有一个 kid (key id) 参数,此参数用于匹配特定的键。 RFC 7517 建议使用 kid在 key 翻转期间在 JWK 集中的一组 key 中进行选择。当您的应用程序从 JWKS 获取 key 时,您将比较来自 JWK 的 key 集与本地副本中的 key 集。比较基于 kid .如果一个key有一些 kid存在于 JWKS 但不存在于您的本地副本中,您应该将此 key 添加到您的副本中。反之亦然,如果一个键带有一些 kid存在于您的本地副本中但不存在于 JWKS 中,您应该从本地副本中删除此 key 。
    您的应用程序应该多久从 JWKS 获取 key ?这取决于您,这取决于您的应用和/或组织的风险承受能力。一些应用程序每分钟获取一次,其他应用程序每小时或每天获取一次。
    假设您的应用程序从不执行此提取, key 已硬编码在您的应用程序中。这将一直有效,直到提供者删除 key 。 (我们假设我们在这里谈论的是公钥。JWK 可以代表私钥……并且您不想嵌入到您的应用程序中)。一些提供商不轮换 key 或在很长一段时间内轮换一次。如果您正在与知名(对您而言)提供商打交道,并且他们向您保证他们不会轮换 key ,那么您将 key 嵌入到您的应用程序中的风险很低。
    一般来说,将公钥嵌入到应用程序中并不是一个好主意。如果您打算使用 JWKS 端点,请实现上面概述的简单获取 + 更新解决方案。

    关于oauth-2.0 - JWK什么时候到期? JWKS 轮换政策,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67122035/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com