【问题标题】:How to secure OAuth2.0 secret and secret key rotation如何保护 OAuth2.0 密钥和密钥轮换
【发布时间】:2020-08-05 20:48:28
【问题描述】:

OAuth2.0 使用秘密作为对称密钥,例如 HMACSHA256 算法用于生成签名。这个秘密很重要,否则任何人都可以创建一个“有效的”JWT 令牌并呈现给服务器。例如,如果我创建一个 JWT 并对其进行签名,则该签名是有效的。只有服务器知道秘密或对称密钥。所以我无法创建一个将与服务器“通过”的 JWT,因为我不知道服务器的秘密。到目前为止,一切都很好。 现在,如果有多个服务器和多个微服务,因此可能有几十个服务器,它们都需要知道相同的秘密,以便 JWT 在所有服务器中“通过”。这似乎是一个很大的漏洞。如果一台服务器被攻破并且秘密已知,则所有服务器都可能被攻破。 此外,缓解这种情况的小方法是不时轮换秘密。怎么可能呢? 如果我们将秘密存储在保险库中,那么保险库的密码将在所有服务器中。所以即使这样也无济于事。有什么想法吗??

【问题讨论】:

    标签: oauth-2.0 jwt spring-vault


    【解决方案1】:

    最常见的 RSA256 用于使用非对称密钥对令牌进行签名,以便:

    • 授权服务器知道私钥
    • 任何人(包括 API)都可以从授权服务器的 JWKS 端点下载公钥,并使用它来验证令牌

    如果使用对称密钥,那么 API 将无法验证内存中的令牌,尽管它们可以使用自省来验证令牌,如 Step 16 of my blog post

    【讨论】:

      猜你喜欢
      • 2011-02-01
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多