【问题标题】:"Shared secret" for JWT Authentication SOAJWT 身份验证 SOA 的“共享密钥”
【发布时间】:2018-04-05 13:45:16
【问题描述】:

我有几个服务,我正在使用带有授权服务器的 OAuth2,它返回 JWT 令牌。我将使用相同的 JWT 令牌来授权我的所有服务(如果这是一个好方法,请告诉我)。此外,如果我采用这种方法,我将需要在我的所有服务之间共享我的秘密(签名)。请让我知道这是否是一个好方法(我认为应该有一些公共的秘密存储,并且在更新的情况下它应该更新所有服务上的秘密,但我不确定是否有现有的解决方案以及在哪里这个解决方案好不好)。

提前致谢,

【问题讨论】:

    标签: java oauth-2.0 jwt soa


    【解决方案1】:

    为了更好的安全性,建议使用 private/public 密钥方法而不是共享密钥。

    JWKS 是此类实现的标准。这个想法是您将 privatepublic 密钥保存在您的 OAuth2 服务器上,并让您的服务回调 OAuth2 以获取 public 密钥为了验证 JWT 令牌。出于性能原因,您可以缓存该公钥,以免在每次验证时调用 OAuth2 服务器。

    如果您使用的是 Spring,您还可以使用 org.springframework.security.oauth2.provider.token.store.jwk.JwkTokenStore 来为您进行验证和缓存。

    您也可以对共享密钥执行相同的操作,但这需要 HTTPS 连接回 OAuth2 服务器,以免将其暴露在网络上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 2018-09-16
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多