结合openfeign如何传递认证消息

来源:3-1 Restful简介

破地瓜

2020-06-23

当前服务包含三个服务

  1. nacos(注册中心)
  2. OAuth服务(登陆认证)
  3. 服务A(业务服务)
  4. 服务B(业务服务)
    服务A和服务B 注册到nacos, 服务A和服务B 分别接入OAuth(单点登陆方式)

服务A调用服务B时 使用的openfeign的声名式客户端;
并在服务A 中写了以下代码;

@Bean
    public RequestInterceptor requestTokenBearerInterceptor() {
        return new RequestInterceptor() {
            @Override
            public void apply(RequestTemplate requestTemplate) {
                OAuth2AuthenticationDetails details = (OAuth2AuthenticationDetails)
                        SecurityContextHolder.getContext().getAuthentication().getDetails();
                requestTemplate.header("Authorization", "bearer " + details.getTokenValue());
            }
        };
    }

目前此请求被服务B拦截(会返回0auth服务的登录页) ,如何才能在服务A通过openfeign调用服务B时,让服务B能取到当前的认证信息呢?

写回答

1回答

JoJo

2020-06-23

这么写应该可以啊,你确认这个Interceptor生效了吗?


0
1
破地瓜
 生效了,我调整服务B的拦截地址,发现服务B能的request的header中有Authorization的token信息,但是服务B不处理header中的Authorization信息,导致还是进入了oauth的登录页面
2020-06-23
共1条回复

Spring Security技术栈开发企业级认证与授权

Spring Security技术栈,REST风格开发常见接口,独立开发认证授权模块保证REST服务安全

2662 学习 · 1561 问题

查看课程