101 log.debug(
"auth-method is not keycloak!");
104 log.debug(
"KeycloakServletException initialization");
116 KeycloakConfigResolver configResolver;
117 String configResolverClass = servletContext.getInitParameter(
"keycloak.config.resolver");
118 AdapterDeploymentContext deploymentContext;
119 if (configResolverClass != null) {
121 configResolver = (KeycloakConfigResolver) deploymentInfo.getClassLoader().loadClass(configResolverClass).newInstance();
122 deploymentContext =
new AdapterDeploymentContext(configResolver);
123 log.info(
"Using " + configResolverClass +
" to resolve Keycloak configuration on a per-request basis.");
124 }
catch (Exception ex) {
125 log.warn(
"The specified resolver " + configResolverClass +
" could NOT be loaded. Keycloak is unconfigured and will deny all requests. Reason: " + ex.getMessage());
126 deploymentContext =
new AdapterDeploymentContext(
new KeycloakDeployment());
130 final KeycloakDeployment deployment;
132 log.warn(
"No adapter configuration. Keycloak is unconfigured and will deny all requests.");
133 deployment =
new KeycloakDeployment();
135 deployment = KeycloakDeploymentBuilder.build(is);
137 deploymentContext =
new AdapterDeploymentContext(deployment);
138 log.debug(
"Keycloak is using a per-deployment configuration.");
141 servletContext.setAttribute(AdapterDeploymentContext.class.getName(), deploymentContext);
142 UndertowUserSessionManagement userSessionManagement =
new UndertowUserSessionManagement();
143 final NodesRegistrationManagement nodesRegistrationManagement =
new NodesRegistrationManagement();
144 final ServletKeycloakAuthMech mech =
createAuthenticationMechanism(deploymentInfo, deploymentContext, userSessionManagement, nodesRegistrationManagement);
146 UndertowAuthenticatedActionsHandler.Wrapper actions =
new UndertowAuthenticatedActionsHandler.Wrapper(deploymentContext);
150 deploymentInfo.addOuterHandlerChainWrapper(
new ServletPreAuthActionsHandler.Wrapper(deploymentContext, userSessionManagement));
151 deploymentInfo.addAuthenticationMechanism(
"KEYCLOAK",
new AuthenticationMechanismFactory() {
153 public AuthenticationMechanism create(String s, FormParserFactory formParserFactory, Map<String, String> stringStringMap) {
157 deploymentInfo.addInnerHandlerChainWrapper(actions);
159 deploymentInfo.setIdentityManager(
new IdentityManager() {
161 public Account verify(Account account) {
166 public Account verify(String
id, Credential credential) {
167 throw new IllegalStateException(
"Should never be called in Keycloak flow");
171 public Account verify(Credential credential) {
172 throw new IllegalStateException(
"Should never be called in Keycloak flow");
176 ServletSessionConfig cookieConfig = deploymentInfo.getServletSessionConfig();
177 if (cookieConfig == null) {
178 cookieConfig =
new ServletSessionConfig();
180 if (cookieConfig.getPath() == null) {
181 log.debug(
"Setting jsession cookie path to: " + deploymentInfo.getContextPath());
182 cookieConfig.setPath(deploymentInfo.getContextPath());
183 deploymentInfo.setServletSessionConfig(cookieConfig);
185 ChangeSessionId.turnOffChangeSessionIdOnLogin(deploymentInfo);
186 deploymentInfo.addListener(
new ListenerInfo(UndertowNodesRegistrationManagementWrapper.class,
new InstanceFactory<UndertowNodesRegistrationManagementWrapper>() {
189 public InstanceHandle<UndertowNodesRegistrationManagementWrapper> createInstance() throws InstantiationException {
190 UndertowNodesRegistrationManagementWrapper listener = new UndertowNodesRegistrationManagementWrapper(nodesRegistrationManagement);
191 return new ImmediateInstanceHandle<UndertowNodesRegistrationManagementWrapper>(listener);
boolean isAuthenticationMechanismPresent(DeploymentInfo deploymentInfo, final String mechanismName)
Definition: KeycloakServletExtension.java:58
ServletKeycloakAuthMech createAuthenticationMechanism(DeploymentInfo deploymentInfo, AdapterDeploymentContext deploymentContext, UndertowUserSessionManagement userSessionManagement, NodesRegistrationManagement nodesRegistrationManagement)
Definition: KeycloakServletExtension.java:197
static InputStream getConfigInputStream(ServletContext context)
Definition: KeycloakServletExtension.java:78
static Logger log
Definition: KeycloakServletExtension.java:55