Class SecurityContextPropagationChannelInterceptor
java.lang.Object
org.springframework.security.messaging.context.SecurityContextPropagationChannelInterceptor
- All Implemented Interfaces:
 org.springframework.messaging.support.ChannelInterceptor,org.springframework.messaging.support.ExecutorChannelInterceptor
public final class SecurityContextPropagationChannelInterceptor
extends Object
implements org.springframework.messaging.support.ExecutorChannelInterceptor
An 
ExecutorChannelInterceptor that takes an Authentication from the
 current SecurityContext (if any) in the
 preSend(Message, MessageChannel) callback and stores it into an
 authenticationHeaderName message header. Then sets the context from this
 header in the beforeHandle(Message, MessageChannel, MessageHandler) and
 postReceive(Message, MessageChannel) both of which typically happen on a
 different thread.
 
 Note: cannot be used in combination with a SecurityContextChannelInterceptor on
 the same channel since both these interceptors modify a security context on a handling
 and receiving operations.
- Since:
 - 6.2
 - See Also:
 
- 
Constructor Summary
ConstructorsConstructorDescriptionCreate a new instance using the header of the nameSimpMessageHeaderAccessor.USER_HEADER.SecurityContextPropagationChannelInterceptor(String authenticationHeaderName) Create a new instance that uses the specified header to populate theAuthentication. - 
Method Summary
Modifier and TypeMethodDescriptionvoidafterMessageHandled(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel, org.springframework.messaging.MessageHandler handler, Exception ex) org.springframework.messaging.Message<?>beforeHandle(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel, org.springframework.messaging.MessageHandler handler) org.springframework.messaging.Message<?>postReceive(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel) org.springframework.messaging.Message<?>preSend(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel) voidsetAnonymousAuthentication(Authentication authentication) Configure an Authentication used for anonymous authentication.voidMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.messaging.support.ChannelInterceptor
afterReceiveCompletion, afterSendCompletion, postSend, preReceive 
- 
Constructor Details
- 
SecurityContextPropagationChannelInterceptor
public SecurityContextPropagationChannelInterceptor()Create a new instance using the header of the nameSimpMessageHeaderAccessor.USER_HEADER. - 
SecurityContextPropagationChannelInterceptor
Create a new instance that uses the specified header to populate theAuthentication.- Parameters:
 authenticationHeaderName- the header name to populate theAuthentication. Cannot be null.
 
 - 
 - 
Method Details
- 
setSecurityContextHolderStrategy
 - 
setAnonymousAuthentication
Configure an Authentication used for anonymous authentication. Default is:new AnonymousAuthenticationToken("key", "anonymous", AuthorityUtils.createAuthorityList("ROLE_ANONYMOUS"));- Parameters:
 authentication- the Authentication used for anonymous authentication. Cannot be null.
 - 
preSend
public org.springframework.messaging.Message<?> preSend(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel) - Specified by:
 preSendin interfaceorg.springframework.messaging.support.ChannelInterceptor
 - 
beforeHandle
public org.springframework.messaging.Message<?> beforeHandle(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel, org.springframework.messaging.MessageHandler handler) - Specified by:
 beforeHandlein interfaceorg.springframework.messaging.support.ExecutorChannelInterceptor
 - 
postReceive
public org.springframework.messaging.Message<?> postReceive(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel) - Specified by:
 postReceivein interfaceorg.springframework.messaging.support.ChannelInterceptor
 - 
afterMessageHandled
public void afterMessageHandled(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel, org.springframework.messaging.MessageHandler handler, Exception ex) - Specified by:
 afterMessageHandledin interfaceorg.springframework.messaging.support.ExecutorChannelInterceptor
 
 -