本文介绍了在ZUUL网关中完成实际身份验证后,访问微服务中的Spring安全主体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我们的项目JWT token中,验证和其他与authorization相关的逻辑均在ZUUL网关中完成.如果zuul成功验证了令牌,它将把请求转到相应的微服务

In our project JWT token validation and other authorization related logics are done in ZUUL gateway. If zuul succesfully validated the token it will proceed the request to the corresponding microservice

在这种情况下,从ZUUl gateway完成JWT authorization后,如何将Principal发送到其他微服务.

In that case, How can i send Principal to other microservices, when JWT authorization has been done from ZUUl gateway .

我当然可以在其他服务的控制器中使用@RequestHeader(value="Authorization")来获取令牌.

I can of course fetch the token using @RequestHeader(value="Authorization")in controllers of other services.

但是为了使用@Preauthorize(id,principal)类型的功能,我需要未进行实际身份验证的其他微服务中的委托人.

But in order to use @Preauthorize(id,principal) kind offunctionality, i need principal in other microservices where the actual authentication has not been taken place.

有可能这样做吗?

推荐答案

是的.

无论何时创建或生成新的Jwt令牌,都要在Jwt令牌声明中添加您的(用户详细信息或下游微服务中需要使用的任何有用信息).

只要在Zuul API网关中进行路由,它将把当前请求传递到您的下游微服务.在该传入请求中,您可以从请求标头中获取Jwt令牌.

Whenever routing happens in Zuul API gateway it will pass the current request to your downstream microservices. In that incoming request you can get your Jwt token from the request header.

使用Jwt令牌从任何微服务访问用户详细信息或任何信息的步骤:

  1. 从请求标头中获取令牌.
  2. 使用正确的签名密钥解析令牌,并从令牌声明中获取用户详细信息.

供您参考: https://medium.com/@Baimurzin/how-to-get-the-current-user-in-spring-cloud-microservices-c876e1c6fc65

这篇关于在ZUUL网关中完成实际身份验证后,访问微服务中的Spring安全主体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-22 07:55