Class AbstractKeycloakAuthenticatorValve
java.lang.Object
org.apache.catalina.util.LifecycleBase
org.apache.catalina.util.LifecycleMBeanBase
org.apache.catalina.valves.ValveBase
org.apache.catalina.authenticator.AuthenticatorBase
org.apache.catalina.authenticator.FormAuthenticator
org.nuxeo.shaded.keycloak.adapters.tomcat.AbstractKeycloakAuthenticatorValve
- All Implemented Interfaces:
jakarta.security.auth.message.config.RegistrationListener,MBeanRegistration,org.apache.catalina.Authenticator,org.apache.catalina.Contained,org.apache.catalina.JmxEnabled,org.apache.catalina.Lifecycle,org.apache.catalina.LifecycleListener,org.apache.catalina.Valve
- Direct Known Subclasses:
KeycloakAuthenticatorValve
public abstract class AbstractKeycloakAuthenticatorValve
extends org.apache.catalina.authenticator.FormAuthenticator
implements org.apache.catalina.LifecycleListener
Keycloak authentication valve
- Version:
- $Revision: 1 $
- Author:
- Davide Ungari, Bill Burke
- Implementation Note:
- Copied from Keycloak Tomcat Adapter since it won't be upgraded to Jakarta as their support is dropped
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.catalina.authenticator.AuthenticatorBase
org.apache.catalina.authenticator.AuthenticatorBase.AllowCorsPreflightNested classes/interfaces inherited from interface org.apache.catalina.Lifecycle
org.apache.catalina.Lifecycle.SingleUse -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected org.keycloak.adapters.AdapterDeploymentContextprotected org.keycloak.adapters.NodesRegistrationManagementstatic final Stringprotected org.keycloak.adapters.tomcat.CatalinaUserSessionManagementFields inherited from class org.apache.catalina.authenticator.FormAuthenticator
authenticationSessionTimeout, characterEncoding, landingPageFields inherited from class org.apache.catalina.authenticator.AuthenticatorBase
alwaysUseSession, AUTH_HEADER_NAME, cache, changeSessionIdOnAuthentication, context, disableProxyCaching, jaspicCallbackHandlerClass, REALM_NAME, securePagesWithPragma, secureRandomAlgorithm, secureRandomClass, secureRandomProvider, sendAuthInfoResponseHeaders, sessionIdGenerator, sm, ssoFields inherited from class org.apache.catalina.valves.ValveBase
asyncSupported, container, containerLog, nextFields inherited from interface org.apache.catalina.Lifecycle
AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected booleanauthenticateInternal(org.apache.catalina.connector.Request request, jakarta.servlet.http.HttpServletResponse response, Object loginConfig) protected voidprotected voidcheckKeycloakSession(org.apache.catalina.connector.Request request, org.keycloak.adapters.spi.HttpFacade facade) Checks that access token is still valid.protected abstract AbstractAuthenticatedActionsValvecreateAuthenticatedActionsValve(org.keycloak.adapters.AdapterDeploymentContext deploymentContext, org.apache.catalina.Valve next, org.apache.catalina.Container container) protected abstract org.keycloak.adapters.tomcat.PrincipalFactoryprotected CatalinaRequestAuthenticatorcreateRequestAuthenticator(org.apache.catalina.connector.Request request, CatalinaHttpFacade facade, org.keycloak.adapters.KeycloakDeployment deployment, org.keycloak.adapters.AdapterTokenStore tokenStore) protected abstract booleanforwardToErrorPageInternal(org.apache.catalina.connector.Request request, jakarta.servlet.http.HttpServletResponse response, Object loginConfig) protected org.keycloak.adapters.AdapterTokenStoregetTokenStore(org.apache.catalina.connector.Request request, org.keycloak.adapters.spi.HttpFacade facade, org.keycloak.adapters.KeycloakDeployment resolvedDeployment) voidinvoke(org.apache.catalina.connector.Request request, org.apache.catalina.connector.Response response) voidbooleankeycloakRestoreRequest(org.apache.catalina.connector.Request request) voidkeycloakSaveRequest(org.apache.catalina.connector.Request request) voidlifecycleEvent(org.apache.catalina.LifecycleEvent event) protected voidlogoutInternal(org.apache.catalina.connector.Request request) Methods inherited from class org.apache.catalina.authenticator.FormAuthenticator
doAuthenticate, forwardToErrorPage, forwardToLoginPage, getAuthenticationSessionTimeout, getAuthMethod, getCharacterEncoding, getLandingPage, isContinuationRequired, matchRequest, register, restoreRequest, savedRequestURL, saveRequest, setAuthenticationSessionTimeout, setCharacterEncoding, setLandingPageMethods inherited from class org.apache.catalina.authenticator.AuthenticatorBase
allowCorsPreflightBypass, associate, authenticate, changeSessionID, checkForCachedAuthentication, doLogin, getAllowCorsPreflight, getAlwaysUseSession, getCache, getChangeSessionIdOnAuthentication, getContainer, getDisableProxyCaching, getJaspicCallbackHandlerClass, getRealmName, getSecurePagesWithPragma, getSecureRandomAlgorithm, getSecureRandomClass, getSecureRandomProvider, isPreemptiveAuthPossible, isSendAuthInfoResponseHeaders, login, logout, notify, reauthenticateFromSSO, register, setAllowCorsPreflight, setAlwaysUseSession, setCache, setChangeSessionIdOnAuthentication, setContainer, setDisableProxyCaching, setJaspicCallbackHandlerClass, setSecurePagesWithPragma, setSecureRandomAlgorithm, setSecureRandomClass, setSecureRandomProvider, setSendAuthInfoResponseHeaders, startInternal, stopInternalMethods inherited from class org.apache.catalina.valves.ValveBase
backgroundProcess, getDomainInternal, getNext, getObjectNameKeyProperties, initInternal, isAsyncSupported, setAsyncSupported, setNext, toStringMethods inherited from class org.apache.catalina.util.LifecycleMBeanBase
destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister, unregisterMethods inherited from class org.apache.catalina.util.LifecycleBase
addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop
-
Field Details
-
TOKEN_STORE_NOTE
- See Also:
-
userSessionManagement
protected org.keycloak.adapters.tomcat.CatalinaUserSessionManagement userSessionManagement -
deploymentContext
protected org.keycloak.adapters.AdapterDeploymentContext deploymentContext -
nodesRegistrationManagement
protected org.keycloak.adapters.NodesRegistrationManagement nodesRegistrationManagement
-
-
Constructor Details
-
AbstractKeycloakAuthenticatorValve
public AbstractKeycloakAuthenticatorValve()
-
-
Method Details
-
lifecycleEvent
public void lifecycleEvent(org.apache.catalina.LifecycleEvent event) - Specified by:
lifecycleEventin interfaceorg.apache.catalina.LifecycleListener
-
logoutInternal
protected void logoutInternal(org.apache.catalina.connector.Request request) -
beforeStop
protected void beforeStop() -
keycloakInit
public void keycloakInit() -
invoke
public void invoke(org.apache.catalina.connector.Request request, org.apache.catalina.connector.Response response) throws IOException, jakarta.servlet.ServletException - Specified by:
invokein interfaceorg.apache.catalina.Valve- Overrides:
invokein classorg.apache.catalina.authenticator.AuthenticatorBase- Throws:
IOExceptionjakarta.servlet.ServletException
-
createPrincipalFactory
protected abstract org.keycloak.adapters.tomcat.PrincipalFactory createPrincipalFactory() -
forwardToErrorPageInternal
protected abstract boolean forwardToErrorPageInternal(org.apache.catalina.connector.Request request, jakarta.servlet.http.HttpServletResponse response, Object loginConfig) throws IOException - Throws:
IOException
-
createAuthenticatedActionsValve
protected abstract AbstractAuthenticatedActionsValve createAuthenticatedActionsValve(org.keycloak.adapters.AdapterDeploymentContext deploymentContext, org.apache.catalina.Valve next, org.apache.catalina.Container container) -
authenticateInternal
protected boolean authenticateInternal(org.apache.catalina.connector.Request request, jakarta.servlet.http.HttpServletResponse response, Object loginConfig) throws IOException - Throws:
IOException
-
createRequestAuthenticator
protected CatalinaRequestAuthenticator createRequestAuthenticator(org.apache.catalina.connector.Request request, CatalinaHttpFacade facade, org.keycloak.adapters.KeycloakDeployment deployment, org.keycloak.adapters.AdapterTokenStore tokenStore) -
checkKeycloakSession
protected void checkKeycloakSession(org.apache.catalina.connector.Request request, org.keycloak.adapters.spi.HttpFacade facade) Checks that access token is still valid. Will attempt refresh of token if it is not.- Parameters:
request-
-
keycloakSaveRequest
- Throws:
IOException
-
keycloakRestoreRequest
public boolean keycloakRestoreRequest(org.apache.catalina.connector.Request request) -
getTokenStore
protected org.keycloak.adapters.AdapterTokenStore getTokenStore(org.apache.catalina.connector.Request request, org.keycloak.adapters.spi.HttpFacade facade, org.keycloak.adapters.KeycloakDeployment resolvedDeployment)
-