在微服务环境中,任何生产者都应该能够验证 JWT 令牌吗?
In a microservice environment, should any producer be able to verify JWT tokens?
我正在尝试弄清楚如何在微服务环境中管理授权。
这是我假设的场景。
我有一个提供身份验证的服务(使用 devise
gem) and authorization via oauth2 (using doorkeeper
gem). Once logged in, the service returns a JWT 令牌给用户。
现在假设我有两个 API 服务器。用户必须向这些 API 服务器提供 JWT 令牌才能访问私有资源。
是否可以与我的两个 API 服务器共享我用来签署 JWT 令牌的 JWT 密钥,以便它们可以解码令牌并验证其有效性?或者我的 API 服务器应该将 JWT 令牌转发给授权服务并要求它验证吗?
与 API 个服务器共享 JWT 密钥的优点:
- 没有往返授权服务
与 API 个服务器共享 JWT 密钥的缺点:
- 如果有人入侵我的任何 API 服务器,he/she 可以访问我的 JWT 密钥
我卡住了。我什至不知道是否还有我没有考虑过的第三种解决方案:)
谢谢!
您可以使用 PKI signing/verification 系统。在这种方法中,您的授权服务将使用私钥签署 JWT,所有消费服务都需要 public 密钥才能使用 JWT。 public 密钥可以轻松分发 - 如果您的体系结构中有配置服务器,则可以通过配置服务器分发。即使有人闯入了您的一项服务,他也只会拥有 public 密钥,而不是私钥。
我正在尝试弄清楚如何在微服务环境中管理授权。
这是我假设的场景。
我有一个提供身份验证的服务(使用 devise
gem) and authorization via oauth2 (using doorkeeper
gem). Once logged in, the service returns a JWT 令牌给用户。
现在假设我有两个 API 服务器。用户必须向这些 API 服务器提供 JWT 令牌才能访问私有资源。
是否可以与我的两个 API 服务器共享我用来签署 JWT 令牌的 JWT 密钥,以便它们可以解码令牌并验证其有效性?或者我的 API 服务器应该将 JWT 令牌转发给授权服务并要求它验证吗?
与 API 个服务器共享 JWT 密钥的优点:
- 没有往返授权服务
与 API 个服务器共享 JWT 密钥的缺点:
- 如果有人入侵我的任何 API 服务器,he/she 可以访问我的 JWT 密钥
我卡住了。我什至不知道是否还有我没有考虑过的第三种解决方案:)
谢谢!
您可以使用 PKI signing/verification 系统。在这种方法中,您的授权服务将使用私钥签署 JWT,所有消费服务都需要 public 密钥才能使用 JWT。 public 密钥可以轻松分发 - 如果您的体系结构中有配置服务器,则可以通过配置服务器分发。即使有人闯入了您的一项服务,他也只会拥有 public 密钥,而不是私钥。