HTTP Status 401 - Full authentication is required to access this resource
Postman发请求
网关------》A服务 携带JWT做认证ok
网关------》B服务 携带JWT做认证OK,
网关------》A服务----Feign(调用)-----》B服务 Full authentication is required to access this resource
分析:
a.因为Feign在服务之间相互调用如果需要认证,需要实现RequestInterceptor,在每次请求的时候header里面增加(token、oauthToken、Authorization),但是发现单单给header里面增加(token、oauthToken、Authorization),还是会报认证错误。于是把A服务请求中所有header放入RequestInterceptor实现代码中就ok了。
之前的拦截器代码:
改动后代码:
b.线程隔离策略设置为信号量,默认线程
hystrix.command.default.execution.isolation.strategy=SEMAPHORE
官方文档:
如果你需要在你的程序中使用ThreadLocal绑定变量,您需要将Hystrix的线程隔离策略设置为“信号量”或在Fegin中禁用Hystrix
# To disable Hystrix in Feign(禁用断路器,这样将不会走服务降级,之前想调用放返回调用失败异常)
feign.hystrix.enabled=false
# To set thread isolation to SEMAP(设置线程隔离策略为信号量)
hystrix.command.default.execution.isolation.strategy=SEMAPHORE
微信公众号