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

Posted

技术标签:

【中文标题】将传入的令牌下游中继到其他服务【英文标题】:Relaying the incoming token downstream to other services 【发布时间】:2019-08-15 14:48:42 【问题描述】:

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

我有一个带有 spring boot eureka 的微服务架构,带有针对 @EnableAuthorizationServer 的承载身份验证。 我在zuul 中使用带有@EnableZuulProxy 和@EnableOAuth2Sso 的Edge Service 来进行请求输入,并且我希望在那时集中安全性,但是当然,我不能让微服务没有安全性,它们每个都是@EnableResourceServer。

一切正常。

问题是: 使用指向 oauth 服务器或边缘服务的 security.oauth2.resource.user-info-uri ,该承载令牌始终针对 oauth 服务器进行验证,即如果它通过 10 个微服务请求,它将验证针对 oauth 服务器的令牌 10 次? 如果令牌有效,是否有任何方法我不必向 oauth 服务器请求 10 次?

【问题讨论】:

【参考方案1】:

好吧, 似乎对于 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 服务向授权服务器发出额外的请求。

就是这样。

【讨论】:

以上是关于将传入的令牌下游中继到其他服务的主要内容,如果未能解决你的问题,请参考以下文章

操作 GCM 下游消息

Springboot:将从swagger UI捕获的JWT令牌自动传递给下游(服务到服务)API调用

如何将用户角色从授权服务器复制到下游微服务?

如果令牌在服务之间过期怎么办?

GCM 客户端收不到下游消息

将传入的电子邮件通过管道传输到 Windows IIS SMTP 上的脚本?