Class DefaultSessionAuthenticationStrategy
java.lang.Object
com.broadleafcommerce.auth.user.service.DefaultSessionAuthenticationStrategy
- All Implemented Interfaces:
org.springframework.security.web.authentication.session.SessionAuthenticationStrategy
public class DefaultSessionAuthenticationStrategy
extends Object
implements org.springframework.security.web.authentication.session.SessionAuthenticationStrategy
This is used to set the session cookie after successful authentication. It is intended to be used
for all authentication types. Each authentication flow should register its own
AuthenticationStrategyDelegate to facilitate loading an OAuth2UserDetails from an
Authentication.-
Constructor Summary
ConstructorsConstructorDescriptionDefaultSessionAuthenticationStrategy(StatelessUtil statelessUtil, List<AuthenticationStrategyDelegate> authenticationStrategyDelegates, AuthorizedClientService<AuthorizedClient> clientService) -
Method Summary
Modifier and TypeMethodDescriptionprotected List<AuthenticationStrategyDelegate>protected AuthorizedClientgetClient(org.springframework.security.core.Authentication authentication) protected AuthorizedClientService<AuthorizedClient>protected OAuth2UserDetailsgetOAuth2UserDetails(@NonNull AuthenticationStrategyDelegate delegate, @NonNull org.springframework.security.core.Authentication authentication, AuthorizedClient client) protected StatelessUtilprotected AuthenticationStrategyDelegategetSupportingAuthenticationStrategyDelegate(@NonNull org.springframework.security.core.Authentication authentication, AuthorizedClient authorizedClient) voidonAuthentication(@NonNull org.springframework.security.core.Authentication authentication, @NonNull jakarta.servlet.http.HttpServletRequest request, @NonNull jakarta.servlet.http.HttpServletResponse response) protected voidpopulateRememberMeLoginClaimsIfApplicable(@NonNull org.springframework.security.core.Authentication authentication, Map<String, Object> destinationClaimsMap) If this is a session token issued after successful remember-me auto-login, set additional claims on the session token.protected voidpopulateThirdPartyLoginClaimsIfApplicable(@NonNull AuthenticationStrategyDelegate delegate, @NonNull org.springframework.security.core.Authentication authentication, AuthorizedClient authorizedClient, @NonNull OAuth2UserDetails oAuth2UserDetails, Map<String, Object> destinationClaimsMap) If this is a session token issued after successful third party login, set additional claims on the session token.protected voidsetSessionCookie(@NonNull jakarta.servlet.http.HttpServletResponse response, @NonNull AuthenticationStrategyDelegate delegate, @NonNull org.springframework.security.core.Authentication authentication, AuthorizedClient authorizedClient, @NonNull OAuth2UserDetails oAuth2UserDetails) protected booleanshouldSetCookie(@NonNull org.springframework.security.core.Authentication authentication, @NonNull jakarta.servlet.http.HttpServletRequest request, @NonNull jakarta.servlet.http.HttpServletResponse response) Determine if the session cookie should be set on the response.
-
Constructor Details
-
DefaultSessionAuthenticationStrategy
public DefaultSessionAuthenticationStrategy(StatelessUtil statelessUtil, List<AuthenticationStrategyDelegate> authenticationStrategyDelegates, AuthorizedClientService<AuthorizedClient> clientService)
-
-
Method Details
-
onAuthentication
public void onAuthentication(@NonNull @NonNull org.springframework.security.core.Authentication authentication, @NonNull @NonNull jakarta.servlet.http.HttpServletRequest request, @NonNull @NonNull jakarta.servlet.http.HttpServletResponse response) throws org.springframework.security.web.authentication.session.SessionAuthenticationException - Specified by:
onAuthenticationin interfaceorg.springframework.security.web.authentication.session.SessionAuthenticationStrategy- Throws:
org.springframework.security.web.authentication.session.SessionAuthenticationException
-
shouldSetCookie
protected boolean shouldSetCookie(@NonNull @NonNull org.springframework.security.core.Authentication authentication, @NonNull @NonNull jakarta.servlet.http.HttpServletRequest request, @NonNull @NonNull jakarta.servlet.http.HttpServletResponse response) Determine if the session cookie should be set on the response.- Parameters:
authentication- The successful session authentication.request- The web requestresponse- The web response- Returns:
- True if the session cookie should be added to the response, false otherwise.
-
getSupportingAuthenticationStrategyDelegate
protected AuthenticationStrategyDelegate getSupportingAuthenticationStrategyDelegate(@NonNull @NonNull org.springframework.security.core.Authentication authentication, @Nullable AuthorizedClient authorizedClient) -
getOAuth2UserDetails
protected OAuth2UserDetails getOAuth2UserDetails(@NonNull @NonNull AuthenticationStrategyDelegate delegate, @NonNull @NonNull org.springframework.security.core.Authentication authentication, @Nullable AuthorizedClient client) -
getClient
@Nullable protected AuthorizedClient getClient(org.springframework.security.core.Authentication authentication) -
setSessionCookie
protected void setSessionCookie(@NonNull @NonNull jakarta.servlet.http.HttpServletResponse response, @NonNull @NonNull AuthenticationStrategyDelegate delegate, @NonNull @NonNull org.springframework.security.core.Authentication authentication, @Nullable AuthorizedClient authorizedClient, @NonNull @NonNull OAuth2UserDetails oAuth2UserDetails) -
populateThirdPartyLoginClaimsIfApplicable
protected void populateThirdPartyLoginClaimsIfApplicable(@NonNull @NonNull AuthenticationStrategyDelegate delegate, @NonNull @NonNull org.springframework.security.core.Authentication authentication, @Nullable AuthorizedClient authorizedClient, @NonNull @NonNull OAuth2UserDetails oAuth2UserDetails, Map<String, Object> destinationClaimsMap) If this is a session token issued after successful third party login, set additional claims on the session token.- Parameters:
delegate- theAuthenticationStrategyDelegatethat was determined to support this authenticationauthentication- theAuthenticationthat was just successfully authenticated. For third-party login, this is usuallyOAuth2AuthenticationTokenauthorizedClient- (optional) the BroadleafAuthorizedClientthis authentication was foroAuth2UserDetails- the user details that were built for the current authentication bydelegatedestinationClaimsMap- the map of claims this method will populate. These will go on the final session token.
-
populateRememberMeLoginClaimsIfApplicable
protected void populateRememberMeLoginClaimsIfApplicable(@NonNull @NonNull org.springframework.security.core.Authentication authentication, Map<String, Object> destinationClaimsMap) If this is a session token issued after successful remember-me auto-login, set additional claims on the session token.- Parameters:
authentication- theAuthenticationthat was just successfully authenticated. If auto-login was performed, this is usuallyRememberMeAuthenticationTokendestinationClaimsMap- the map of claims this method will populate. These will go on the final session token.
-
getStatelessUtil
-
getAuthenticationStrategyDelegates
-
getClientService
-