目標はRequestInterceptorを使用してセキュリティコンテキストからデータを添付することですが、SecurityContextHolder.getContext().getAuthentication()
がnullでないにもかかわらず常にnullを返すという問題(100%は確信しています)。Feign RequestInterceptorを使用してアクセスできないセキュリティコンテキスト
これは、インターセプタが作成され、他のスレッドで実行されているためです。
この問題を解決し、セキュリティコンテキストから実際のデータを取得するにはどうすればよいですか?
マイサービス:
@FeignClient(value = "api", configuration = { FeignConfig.class })
public interface DocumentService {
@RequestMapping(value = "/list", method = RequestMethod.GET)
DocumentListOperation list();
}
マイFeignConfigクラス:
@Bean
public RequestInterceptor requestInterceptor() {
return new HeaderInterceptor(userService);
}
public class HeaderInterceptor implements RequestInterceptor {
private UserService userService;
public HeaderInterceptor(UserService userService) {
this.userService = userService;
}
@Override
public void apply(RequestTemplate requestTemplate) {
Authentication a = SecurityContextHolder.getContext().getAuthentication()
requestTemplate.header("authentication", a.toString());
}
}