dromara / lamp-cloud

lamp-cloud 支持jdk21、jdk17、jdk11、jdk8,ta基于 SpringCloud + SpringBoot 开发的微服务中后台快速开发平台,专注于多租户(SaaS架构)解决方案,亦可作为普通项目(非SaaS架构)的基础开发框架使用,目前已实现插拔式数据库隔离、SCHEMA隔离、字段隔离 等租户隔离方案。
http://tangyh.top
Apache License 2.0
5.5k stars 1.68k forks source link

无效的基本身份验证令牌 #295

Closed Angle-bo closed 1 year ago

Angle-bo commented 1 year ago

版本信息:

JDK 版本(必填) : 11.0.15 源码版本(必填):4.14.0 MySQL(必填): 5.7.9 Nacos(必填):8.0.26

问题描述:

其它服务通过feign调用oauth中的认证登录接口/anyTenant/login,login登录方法中从request获取不到Header信息(如:Authorization等)。 本地运行,没有出现上述问题,打包运行到docker环境,始终获取不到Header信息。可能是哪里的问题?

/anyTenant/login通过feign远程调用,不追加请求头信息?在FeignAddHeaderRequestInterceptor打断点调试,没找到具体原因。

zuihou commented 1 year ago

前端调用 /api/oauth/anyTenant/login 接口时, 前端设置请求头、经过网关网关也会设置请求头。

但feign 调用时, 请求只会经过 FeignAddHeaderRequestInterceptor 拦截器,FeignAddHeaderRequestInterceptor拦截器不是所有请求头都会传递,具体传递那些,请参考源码中HEADER_NAME_LIST。 你在调用方,手动设置请求头,/anyTenant/login 接口能正常获取。

Angle-bo commented 1 year ago

我遇到的问题很奇怪。本地代码运行,没出现问题,打包运行docker就出现获取不到Header中的值。 我这边的调用流程是这样的:A服务Controller中通过feign调用oauth的/anyTenant/login,A服务中request可以获取到Header中的Authorization,但是在oauth中的login方法中通过request获取Header中的Authorization是空值。

Angle-bo commented 1 year ago

之前用的4.13.2没出现这个问题,升级4.14.0。之后出现了这个问题。 查了一下,只是升级了parent下pom中的相关依赖。并没有改具体的代码。 目前没找到具体的问题,先回退到4.13.2正常使用。

zuihou commented 1 year ago

4.14.0升级了 spring-cloud 相关依赖,不知道会不会影响 FeignAddHeaderRequestInterceptor

zuihou commented 1 year ago

在 FeignAddHeaderRequestInterceptor 中打日志看看有没有执行吧

Angle-bo commented 1 year ago

目前分析的情况是,新版本中,出错是因为FeignAddHeaderRequestInterceptor 没有执行导致的。暂时没找到具体原因。 微信截图_20230713140101

Angle-bo commented 1 year ago

spring-cloud-starter-alibaba-seata 2021.0.5.0 发生了变更,添加了SeataFeignRequestInterceptor,执行了SeataFeignRequestInterceptor没执行FeignAddHeaderRequestInterceptor。导致feign请求没有封装请求头。现回退到2021.0.4.0正常使用。 看了一下最新的2021.1版本,又改回跟 2021.0.4.0相似的结构,去掉了SeataFeignRequestInterceptor。但是引用2021.1版本启动项目会报错。循环依赖,目前现降版本2021.0.4.0使用,后续再研究具体是哪里的原因。

图片2021.0.4.0与2021.0.5.0的区别 微信截图_20230713145749

Angle-bo commented 1 year ago

微信截图_20230713151030

Angle-bo commented 1 year ago

目前发现使用2021.0.5.0版本OpenFeignAutoConfiguration没有执行,FeignAddHeaderRequestInterceptor没有自动注册,导致没有执行。

zuihou commented 1 year ago

启动时,OpenFeignAutoConfiguration是否加载取决于:

image
zuihou commented 1 year ago

已解决