问题描述
在我们的项目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令牌从任何微服务访问用户详细信息或任何信息的步骤:
- 从请求标头中获取令牌.
- 使用正确的签名密钥解析令牌,并从令牌声明中获取用户详细信息.
供您参考: https://medium.com/@Baimurzin/how-to-get-the-current-user-in-spring-cloud-microservices-c876e1c6fc65
这篇关于在ZUUL网关中完成实际身份验证后,访问微服务中的Spring安全主体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!