Ich versuche, Frühling Sicherheitskontext durch eine Feder Integration async Nachrichtenfluss zu verbreiten, aber habe festgestellt, dass, obwohl ich SecurityContextPropagationChannelInterceptor
hinzugefügt der Sicherheitskontext endet immer Null in mein Nachrichtenhandler.Wie Spring Sicherheitskontext in Spring-Integration async Messaging-Gateway
@Bean
@GlobalChannelInterceptor(patterns = {"*"})
public ChannelInterceptor securityContextPropagationInterceptor()
{
return new SecurityContextPropagationChannelInterceptor();
}
ich initiieren meine Flow aus einem Dienst, der durch einen Anruf zu meiner Gateway-Schnittstelle einen besiedelten Sicherheitskontext hat:
@MessagingGateway
public interface AssignmentsService
{
@Gateway(requestChannel = "applyAssignmentsFlow.input")
ListenableFuture<AssignmentResult> applyAssignments(AssignmentRequest assignmentRequest);
}
Bei der weiteren Fehlersuche hat ich gefunden, dass die GatewayProxyFactoryBean
einen neuen Thread erstellt, wenn Initiieren meines Flusses, aber nicht den Sicherheitskontext.
Ich habe gesucht, aber konnte nicht herausfinden, wie dies konfiguriert wird, um den Sicherheitskontext zu verbreiten.
Hallo! Dies funktionierte fast, außer dass ich fand, dass ich 'DelegatingSecurityContextAsyncTaskExecutor' ableiten musste, da es die' AsyncListenableTaskExecutor'-Schnittstelle nicht implementierte. Sollte ich eine Änderungsanfrage mit dem Spring Security Team stellen, um es zu ändern, um den AsyncListenableTaskExecutor zu implementieren? –
Ja, bitte: https://github.com/spring-projects/spring-security/issues. –