"Shared secret" 用于 JWT 身份验证 SOA

"Shared secret" for JWT Authentication SOA

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

提前致谢,

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

JWKS is a standard for such implementation. The idea is that you keep private and public keys on your OAuth2 服务器并让您的服务回调 OAuth2 以获取 public 密钥 以验证 JWT 令牌。出于性能原因,您可以缓存 public 密钥,以免在每次验证时调用 OAuth2 服务器。

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

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