qq_41908367 2022-06-22 11:24 采纳率: 90.4%
浏览 279
已结题

oauth2 的资源服务器获取不到用户信息怎么办

    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

资源服务器和认证服务器是两个微服务,上面这句在资源服务器中获取不到,是null的 应该怎么获取

可以调用认证服务器的oauth/check_token,但是资源服务器的token保存在哪,不能每个控制器都加上这个吧@RequestHeader("Authorization") String token ,然后获取到的user对象应该保存在哪,放到map里嘛?那token过期怎么自动删除呢。

  • 写回答

1条回答 默认 最新

  • a1767028198 2022-06-22 13:06
    关注

    资源服务器不需要存token,可以通过认证服务器的接口去check token,如果是jwt token,也可以通过去认证服务拉取jwt的配置,自行解析jwt也是可以的,本质上还是一样,资源服务器不存储token,统一通过ResourceServerTokenServices去获取凭证信息,

    img


    默认实现DefaultTokenServices,他通过tokenStore去获取凭证信息,tokenStore又是你自己配置的,redis啊,jwt都有可能;
    我们使用的是RemoteTokenServices,请求认证服务的check/token,ResourceServerTokenServices不管何种方式,拿到凭证信息了,资源服务器还是会存这个认证信息的(不存认证信息,拦截链无法放行,导致一直套娃),存到ThreadLocal中,SecurityContextHolder.getContext().getAuthentication()就能拿到了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏

报告相同问题?

问题事件

  • 系统已结题 7月1日
  • 已采纳回答 6月23日
  • 创建了问题 6月22日

悬赏问题

  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化