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
ConstructorDescriptionCreate 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 TypeMethodDescriptionvoid
afterMessageHandled
(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) void
setAnonymousAuthentication
(Authentication authentication) Configure an Authentication used for anonymous authentication.void
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods 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:
preSend
in 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:
beforeHandle
in interfaceorg.springframework.messaging.support.ExecutorChannelInterceptor
-
postReceive
public org.springframework.messaging.Message<?> postReceive(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel) - Specified by:
postReceive
in 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:
afterMessageHandled
in interfaceorg.springframework.messaging.support.ExecutorChannelInterceptor
-