其实client_credentials模式,填塞token基本跟这差不多。只是获取token方法不同。本文只是将已登录用户access token转发出去.
1.环境
spring cloud 2021.0.4
java 17
2.新增一个配置类,定义一个用于拦截openfeign发起请求前的bean函数。
@Configuration
public class SSOOpenFeignConfiguration {
@Bean
public RequestInterceptor requestInterceptor(){
return requestTemplate -> {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (null != authentication) {
AbstractOAuth2Token token = (AbstractOAuth2Token) authentication.getCredentials();
requestTemplate.header("Authorization", "Bearer " + token.getTokenValue());
}
};
}
}
3.openfeign端口指定使用该配置文件
@FeignClient(value= "oauth2", configuration = SSOOpenFeignConfiguration.class)
public interface FeishuTokenOpenFeign {
参考: