Class StatelessUtilImpl
java.lang.Object
com.broadleafcommerce.auth.user.session.StatelessUtilImpl
- All Implemented Interfaces:
StatelessUtil
- Author:
- Jeff Fischer
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionStatelessUtilImpl(AuthorizedClientService<AuthorizedClient> clientService, AuthorizationServerService<AuthorizationServer> serverService, KeyPair dynamicPropertyKeyPair, String issuer) -
Method Summary
Modifier and TypeMethodDescriptionorg.springframework.http.ResponseCookiecreateSavedRequestCookie(String requestUrl, String redirectUrl) Create a cookie containing a JWT token identifying an originating request url and a redirect url.org.springframework.http.ResponseCookieCreate a cookie that can be passed to the response to clear any existing saved request cookie in the browser.jakarta.servlet.http.CookiecreateSessionCookie(OAuth2SessionToken sessionToken) Creates a cookie for theOAuth2SessionToken.protected Supplier<? extends com.broadleafcommerce.data.tracking.core.exception.EntityMissingException>entityMissing(String msg) protected AuthorizedClientfindClient(String clientId) protected AuthorizationServerfindServer(AuthorizedClient client) com.nimbusds.jwt.SignedJWTGenerate a signed JWT with issuer and audience values as well as optional additional claims.getClientId(String savedRequestToken) getCookieClaims(String cookieValue) Get a Map of the claims from a SignedJWT cookie.protected StringgetDecodedClaim(jakarta.servlet.http.Cookie savedRequestCookie, String claim, String errorMessage) protected StringgetDecodedClaim(String token, String claim, String errorMessage) protected StatelessUtilPropertiesprotected List<RSAPublicKey>getRedirectUrl(jakarta.servlet.http.Cookie savedRequestCookie) Verify the JWT token contained in the cookie and then return the redirect url contained therein.org.springframework.http.ResponseCookiegetRemovalCookie(jakarta.servlet.http.Cookie cookieToRemove) Returns a removal cookie for any arbitrary cookie.jakarta.servlet.http.CookieCreate a cookie that can be passed to the response to clear any existing saved request cookie in the browser.jakarta.servlet.http.CookiegetRemoveSessionCookie(String clientId) Create a cookie that can be passed to the response to clear any existing session cookie in the browser.getRequestUrl(jakarta.servlet.http.Cookie savedRequestCookie) Verify the JWT token contained in the cookie and then return the original request url contained therein.protected StringGets the SameSite attribute value to use for the saved request cookies (createSavedRequestCookie(String, String)andcreateSavedRequestRemovalCookie()).jakarta.servlet.http.CookiegetSavedRequestCookie(String requestUrl, String redirectUrl) Create a cookie containing a JWT token identifying an originating request url and a redirect url.Get the standard name for a saved request cookiegetSavedRequestJwt(String requestUrl, String redirectUrl) org.springframework.http.ResponseCookiegetSessionCookie(OAuth2SessionToken sessionToken) Gets aResponseCookiefor theOAuth2SessionToken.getSessionCookieName(AuthorizedClient client, AuthorizationServer server) getSessionCookieName(String clientId) Get the standard name for a session cookieorg.springframework.http.ResponseCookiegetSessionRemovalCookie(String clientId) Gets aResponseCookiefor the removal of the session cookie.protected StringgetSessionSameSiteAttribute(AuthorizationServer authorizationServer) Gets the SameSite attribute value for the session cookie.getSessionToken(String clientId, String userId, String subject, Map<String, Object> additionalClaims) Creates aOAuth2SessionTokenfor the provided client ID and subject with the set of additional claims.protected com.nimbusds.jwt.JWTClaimsSetgetSessionTokenClaims(String clientId, String userId, String subject, Map<String, Object> additionalClaims) protected com.nimbusds.jose.JWSSignerConstruct new instance for each invocation, since we need the signer to be in-sync with the dynamic nature of the private key value.refreshSessionToken(OAuth2SessionToken sessionToken) Returns aOAuth2SessionTokenwith a refreshed expiration time.voidsetProperties(StatelessUtilProperties properties) voidsetPublicKeys(List<RSAPublicKey> publicKeys) com.nimbusds.jwt.SignedJWTVerify the signature of a signed JWT inside a cookieMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.broadleafcommerce.auth.user.session.StatelessUtil
isSessionCookiePresent
-
Constructor Details
-
StatelessUtilImpl
public StatelessUtilImpl(AuthorizedClientService<AuthorizedClient> clientService, AuthorizationServerService<AuthorizationServer> serverService, KeyPair dynamicPropertyKeyPair, String issuer)
-
-
Method Details
-
getSessionToken
public OAuth2SessionToken getSessionToken(String clientId, String userId, String subject, Map<String, Object> additionalClaims) Description copied from interface:StatelessUtilCreates aOAuth2SessionTokenfor the provided client ID and subject with the set of additional claims.- Specified by:
getSessionTokenin interfaceStatelessUtil- Parameters:
clientId- the client IDsubject- the user subjectadditionalClaims- the additional session claims- Returns:
-
getSigner
protected com.nimbusds.jose.JWSSigner getSigner()Construct new instance for each invocation, since we need the signer to be in-sync with the dynamic nature of the private key value.- Returns:
- a new signer instance matching the most current private key value
- See Also:
-
getSessionTokenClaims
-
refreshSessionToken
Description copied from interface:StatelessUtilReturns aOAuth2SessionTokenwith a refreshed expiration time.- Specified by:
refreshSessionTokenin interfaceStatelessUtil- Parameters:
sessionToken- the session token- Returns:
- the refreshed session token
-
generateSignedJwt
public com.nimbusds.jwt.SignedJWT generateSignedJwt(@Nullable String subject, @Nullable Map<String, Object> claims, @Nullable Long expiresInSeconds) Description copied from interface:StatelessUtilGenerate a signed JWT with issuer and audience values as well as optional additional claims.- Specified by:
generateSignedJwtin interfaceStatelessUtil- Parameters:
subject- The subject of the JWTclaims- Additional claims to add to the JWT- Returns:
- A signed JWT
-
getRedirectUrl
Description copied from interface:StatelessUtilVerify the JWT token contained in the cookie and then return the redirect url contained therein.- Specified by:
getRedirectUrlin interfaceStatelessUtil- Parameters:
savedRequestCookie- seeStatelessUtil.createSavedRequestCookie(String, String)- Returns:
- a decoded URL set with
StatelessUtil.createSavedRequestCookie(String, String)
-
getRequestUrl
Description copied from interface:StatelessUtilVerify the JWT token contained in the cookie and then return the original request url contained therein.- Specified by:
getRequestUrlin interfaceStatelessUtil- Parameters:
savedRequestCookie- seeStatelessUtil.createSavedRequestCookie(String, String)- Returns:
- a decoded URL set with
StatelessUtil.createSavedRequestCookie(String, String)
-
getClientId
- Specified by:
getClientIdin interfaceStatelessUtil
-
getDecodedClaim
-
getDecodedClaim
-
getCookieClaims
Description copied from interface:StatelessUtilGet a Map of the claims from a SignedJWT cookie. The values of the map are Base64 encoded.- Specified by:
getCookieClaimsin interfaceStatelessUtil- Returns:
-
createSessionCookie
Description copied from interface:StatelessUtilCreates a cookie for theOAuth2SessionToken.- Specified by:
createSessionCookiein interfaceStatelessUtil- Parameters:
sessionToken- the session token- Returns:
- the session cookie
-
getRemoveSessionCookie
Description copied from interface:StatelessUtilCreate a cookie that can be passed to the response to clear any existing session cookie in the browser.- Specified by:
getRemoveSessionCookiein interfaceStatelessUtil- Returns:
- the newly created cookie
-
getSessionCookie
Description copied from interface:StatelessUtilGets aResponseCookiefor theOAuth2SessionToken.- Specified by:
getSessionCookiein interfaceStatelessUtil- Parameters:
sessionToken- the session token- Returns:
- the session cookie
-
getSessionRemovalCookie
Description copied from interface:StatelessUtilGets aResponseCookiefor the removal of the session cookie.- Specified by:
getSessionRemovalCookiein interfaceStatelessUtil- Parameters:
clientId- the client ID- Returns:
- the session removal cookie
-
getSessionSameSiteAttribute
Gets the SameSite attribute value for the session cookie. This method should return one of the following values: "None", "Lax", or "Strict".Learn more about the SameSite attribute at: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
- Parameters:
authorizationServer- the authorization server- Returns:
- the SameSite attribute value
-
getSavedRequestCookie
Description copied from interface:StatelessUtilCreate a cookie containing a JWT token identifying an originating request url and a redirect url. This information is used to forward the user to an authentication url. Once authenticated, the original request is completed.- Specified by:
getSavedRequestCookiein interfaceStatelessUtil- Parameters:
requestUrl- the original request (e.g. /oauth/authorize)redirectUrl- the uri to redirect to for authentication (e.g. /login)- Returns:
- a newly created session cookie
-
createSavedRequestCookie
public org.springframework.http.ResponseCookie createSavedRequestCookie(String requestUrl, String redirectUrl) Description copied from interface:StatelessUtilCreate a cookie containing a JWT token identifying an originating request url and a redirect url. This information is used to forward the user to an authentication url. Once authenticated, the original request is completed.- Specified by:
createSavedRequestCookiein interfaceStatelessUtil- Parameters:
requestUrl- the original request (e.g. /oauth/authorize)redirectUrl- the uri to redirect to for authentication (e.g. /login)- Returns:
- a newly created session cookie
-
getSameSiteAttributeForSavedRequestCookie
Gets the SameSite attribute value to use for the saved request cookies (createSavedRequestCookie(String, String)andcreateSavedRequestRemovalCookie()). This method should return one of the following values: "None", "Lax", or "Strict".Learn more about the SameSite attribute at: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
- Returns:
- the SameSite attribute value to use for the saved request cookies
-
getSavedRequestJwt
- Specified by:
getSavedRequestJwtin interfaceStatelessUtil
-
getRemoveSavedRequestCookie
public jakarta.servlet.http.Cookie getRemoveSavedRequestCookie()Description copied from interface:StatelessUtilCreate a cookie that can be passed to the response to clear any existing saved request cookie in the browser.- Specified by:
getRemoveSavedRequestCookiein interfaceStatelessUtil- Returns:
- the newly created cookie
-
createSavedRequestRemovalCookie
public org.springframework.http.ResponseCookie createSavedRequestRemovalCookie()Description copied from interface:StatelessUtilCreate a cookie that can be passed to the response to clear any existing saved request cookie in the browser.- Specified by:
createSavedRequestRemovalCookiein interfaceStatelessUtil- Returns:
- the newly created cookie
- See Also:
-
verify
Description copied from interface:StatelessUtilVerify the signature of a signed JWT inside a cookie- Specified by:
verifyin interfaceStatelessUtil- Parameters:
token- the cookie to verify- Returns:
- a verified and signed JWT token, or null if the given cookie has no value
-
getSessionCookieName
Description copied from interface:StatelessUtilGet the standard name for a session cookie- Specified by:
getSessionCookieNamein interfaceStatelessUtil- Returns:
- the cookie name used to store the session
- See Also:
-
getSessionCookieName
- Specified by:
getSessionCookieNamein interfaceStatelessUtil
-
getIssuer
- Specified by:
getIssuerin interfaceStatelessUtil
-
getSavedRequestCookieName
Description copied from interface:StatelessUtilGet the standard name for a saved request cookie- Specified by:
getSavedRequestCookieNamein interfaceStatelessUtil- Returns:
- the saved request cookie name
- See Also:
-
getRemovalCookie
public org.springframework.http.ResponseCookie getRemovalCookie(jakarta.servlet.http.Cookie cookieToRemove) Description copied from interface:StatelessUtilReturns a removal cookie for any arbitrary cookie.- Specified by:
getRemovalCookiein interfaceStatelessUtil- Parameters:
cookieToRemove- The cookie to target for removal- Returns:
- A cookie that may be set on an
HttpServletResponseto remove the supplied cookie.
-
findClient
-
findServer
-
entityMissing
-
getProperties
-
setProperties
-
getPublicKeys
-
setPublicKeys
-