将传入令牌向下游中继到其他服务

Relaying the incoming token downstream to other services

我正在尝试 100% 了解资源服务器的工作原理,将传入令牌向下游中继到其他服务。

我有一个带有 spring boot eureka 的微服务架构,带有针对 @EnableAuthorizationServer 的 Bearer 身份验证。 我在 zuul 中使用带有@EnableZuulProxy 和@EnableOAuth2Sso 的边缘服务来进行请求输入,我希望此时集中安全性,但当然,我不能在没有安全性的情况下离开微服务,它们中的每一个都是一个@EnableResourceServer。

一切正常。

问题是: 使用 security.oauth2.resource.user-info-uri 指向 oauth 服务器或边缘服务,承载令牌总是针对 oauth 服务器进行验证,即如果它通过 10 个微服务请求,它是否会验证针对 oauth 服务器令牌 10 次? 如果令牌有效,有什么方法可以让我不必向 oauth 服务器请求 10 次?

好的, 似乎对于 Bearer token 类型,总是需要在每个资源服务器上针对身份验证服务器进行身份验证。

解决方案是使用 JWT 令牌。

解释如下: https://developer.okta.com/blog/2018/04/02/client-creds-with-spring-boot#extra-credit-reduce-the-number-of-calls-to-the-authorization-server

我们使用签名的 JWT,这意味着您可以在本地验证它们,而不是在每次请求时从 API 服务向授权服务器发出额外请求。

就是这样。