Ziel ist es, einige Daten aus dem Sicherheitskontext mit RequestInterceptor anzuhängen, aber das Problem, dass die aufrufende SecurityContextHolder.getContext().getAuthentication()
immer null zurückgibt, obwohl sie nicht null ist (100% sicher).Nicht erreichbarer Sicherheitskontext unter Verwendung von Feign RequestInterceptor
Ich verstehe, dass der Interceptor erstellt wird und in anderen Thread ausgeführt wird.
Wie kann ich dieses Problem lösen und tatsächliche Daten aus dem Sicherheitskontext abrufen?
Mein Service:
@FeignClient(value = "api", configuration = { FeignConfig.class })
public interface DocumentService {
@RequestMapping(value = "/list", method = RequestMethod.GET)
DocumentListOperation list();
}
Meine FeignConfig Klasse:
@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());
}
}