gpt4 book ai didi

spring - 从所有其他微服务获取当前经过身份验证的用户

转载 作者:行者123 更新时间:2023-12-02 04:23:23 25 4
gpt4 key购买 nike

我正在使用 spring 创建一个具有微服务架构的项目。我有 zuul 用于集中安全管理,以及其他一些微服务。
要访问当前经过身份验证的用户,在 zuul 中,我使用以下代码行:

SecurityContextHolder.getContext().authentication

但是为了从其他微服务中获取用户,我从每个请求的 header 中提取 token (jwt),然后从声明中提取用户信息,但我发现这种方法有点烦人。
那么,还有其他更漂亮的方法吗?
我尝试在其他微服务中添加 spring security 的依赖项以使用:
SecurityContextHolder.getContext().authentication

但是每次我通过 zuul 执行请求时,即使从那里完成身份验证,我也会收到一条未经授权的错误消息,尽管已经禁用了这些微服务的安全自动配置。

有什么建议吗?

最佳答案

在 Spring SecurityContext 中设置主体对象之前,使用 SecurityContextHolder.getContext().authentication 不会在其他微服务中工作。

我不知道你为什么要在 Zuul 的安全上下文中设置主体并在那里提取相同的主体,但是是的,身份验证和 token 验证应该在 Zuul 完成,并且相同的 jwt 应该发送到 header 中的后端微服务。
现在在后端微服务中,通过使用 spring security,从 jwt 中提取所需的声明并放入 SecurityContextHolder 一次,以便您也可以进一步将其用于请求授权或方法级授权。

关于spring - 从所有其他微服务获取当前经过身份验证的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57621106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com