FebsOAuth2FeignConfigure.java 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. package cc.mrbird.febs.common.configure;
  2. import cc.mrbird.febs.common.entity.constant.FebsConstant;
  3. import com.google.common.net.HttpHeaders;
  4. import feign.RequestInterceptor;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.security.core.context.SecurityContextHolder;
  7. import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails;
  8. import org.springframework.util.Base64Utils;
  9. /**
  10. * OAuth2 Feign配置
  11. *
  12. * @author MrBird
  13. */
  14. public class FebsOAuth2FeignConfigure {
  15. @Bean
  16. public RequestInterceptor oauth2FeignRequestInterceptor() {
  17. return requestTemplate -> {
  18. // 请求头中添加 Zuul Token
  19. String zuulToken = new String(Base64Utils.encode(FebsConstant.GATEWAY_TOKEN_VALUE.getBytes()));
  20. requestTemplate.header(FebsConstant.GATEWAY_TOKEN_HEADER, zuulToken);
  21. // 请求头中添加原请求头中的 Token
  22. Object details = SecurityContextHolder.getContext().getAuthentication().getDetails();
  23. if (details instanceof OAuth2AuthenticationDetails) {
  24. String authorizationToken = ((OAuth2AuthenticationDetails) details).getTokenValue();
  25. requestTemplate.header(HttpHeaders.AUTHORIZATION, FebsConstant.OAUTH2_TOKEN_TYPE + authorizationToken);
  26. }
  27. };
  28. }
  29. }