keycloak
公開メンバ関数 | 限定公開メンバ関数 | 静的限定公開変数類 | 全メンバ一覧
org.keycloak.adapters.wildfly.WildflyKeycloakServletExtension クラス
org.keycloak.adapters.wildfly.WildflyKeycloakServletExtension の継承関係図
Inheritance graph
org.keycloak.adapters.wildfly.WildflyKeycloakServletExtension 連携図
Collaboration graph

公開メンバ関数

boolean isAuthenticationMechanismPresent (DeploymentInfo deploymentInfo, final String mechanismName)
 
void handleDeployment (DeploymentInfo deploymentInfo, ServletContext servletContext)
 

限定公開メンバ関数

ServletKeycloakAuthMech createAuthenticationMechanism (DeploymentInfo deploymentInfo, AdapterDeploymentContext deploymentContext, UndertowUserSessionManagement userSessionManagement, NodesRegistrationManagement nodesRegistrationManagement)
 
String getErrorPage (DeploymentInfo deploymentInfo)
 

静的限定公開変数類

static Logger log = Logger.getLogger(WildflyKeycloakServletExtension.class)
 

詳解

著者
Bill Burke
バージョン
Revision
1

関数詳解

◆ createAuthenticationMechanism()

ServletKeycloakAuthMech org.keycloak.adapters.wildfly.WildflyKeycloakServletExtension.createAuthenticationMechanism ( DeploymentInfo  deploymentInfo,
AdapterDeploymentContext  deploymentContext,
UndertowUserSessionManagement  userSessionManagement,
NodesRegistrationManagement  nodesRegistrationManagement 
)
inlineprotected
37  {
38  log.debug("creating WildflyAuthenticationMechanism");
39  return new WildflyAuthenticationMechanism(deploymentContext, userSessionManagement, nodesRegistrationManagement, deploymentInfo.getConfidentialPortManager(), getErrorPage(deploymentInfo));
40 
41  }
static Logger log
Definition: WildflyKeycloakServletExtension.java:33
String getErrorPage(DeploymentInfo deploymentInfo)
Definition: KeycloakServletExtension.java:204

◆ getErrorPage()

String org.keycloak.adapters.undertow.KeycloakServletExtension.getErrorPage ( DeploymentInfo  deploymentInfo)
inlineprotectedinherited
204  {
205  LoginConfig loginConfig = deploymentInfo.getLoginConfig();
206  String errorPage = null;
207  if (loginConfig != null) {
208  errorPage = loginConfig.getErrorPage();
209  }
210  return errorPage;
211  }

◆ handleDeployment()

void org.keycloak.adapters.undertow.KeycloakServletExtension.handleDeployment ( DeploymentInfo  deploymentInfo,
ServletContext  servletContext 
)
inlineinherited
99  {
100  if (!isAuthenticationMechanismPresent(deploymentInfo, "KEYCLOAK")) {
101  log.debug("auth-method is not keycloak!");
102  return;
103  }
104  log.debug("KeycloakServletException initialization");
105 
106  // Possible scenarios:
107  // 1) The deployment has a keycloak.config.resolver specified and it exists:
108  // Outcome: adapter uses the resolver
109  // 2) The deployment has a keycloak.config.resolver and isn't valid (doesn't exists, isn't a resolver, ...) :
110  // Outcome: adapter is left unconfigured
111  // 3) The deployment doesn't have a keycloak.config.resolver , but has a keycloak.json (or equivalent)
112  // Outcome: adapter uses it
113  // 4) The deployment doesn't have a keycloak.config.resolver nor keycloak.json (or equivalent)
114  // Outcome: adapter is left unconfigured
115 
116  KeycloakConfigResolver configResolver;
117  String configResolverClass = servletContext.getInitParameter("keycloak.config.resolver");
118  AdapterDeploymentContext deploymentContext;
119  if (configResolverClass != null) {
120  try {
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());
127  }
128  } else {
129  InputStream is = getConfigInputStream(servletContext);
130  final KeycloakDeployment deployment;
131  if (is == null) {
132  log.warn("No adapter configuration. Keycloak is unconfigured and will deny all requests.");
133  deployment = new KeycloakDeployment();
134  } else {
135  deployment = KeycloakDeploymentBuilder.build(is);
136  }
137  deploymentContext = new AdapterDeploymentContext(deployment);
138  log.debug("Keycloak is using a per-deployment configuration.");
139  }
140 
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);
145 
146  UndertowAuthenticatedActionsHandler.Wrapper actions = new UndertowAuthenticatedActionsHandler.Wrapper(deploymentContext);
147 
148  // setup handlers
149 
150  deploymentInfo.addOuterHandlerChainWrapper(new ServletPreAuthActionsHandler.Wrapper(deploymentContext, userSessionManagement));
151  deploymentInfo.addAuthenticationMechanism("KEYCLOAK", new AuthenticationMechanismFactory() {
152  @Override
153  public AuthenticationMechanism create(String s, FormParserFactory formParserFactory, Map<String, String> stringStringMap) {
154  return mech;
155  }
156  }); // authentication
157  deploymentInfo.addInnerHandlerChainWrapper(actions); // handles authenticated actions and cors.
158 
159  deploymentInfo.setIdentityManager(new IdentityManager() {
160  @Override
161  public Account verify(Account account) {
162  return account;
163  }
164 
165  @Override
166  public Account verify(String id, Credential credential) {
167  throw new IllegalStateException("Should never be called in Keycloak flow");
168  }
169 
170  @Override
171  public Account verify(Credential credential) {
172  throw new IllegalStateException("Should never be called in Keycloak flow");
173  }
174  });
175 
176  ServletSessionConfig cookieConfig = deploymentInfo.getServletSessionConfig();
177  if (cookieConfig == null) {
178  cookieConfig = new ServletSessionConfig();
179  }
180  if (cookieConfig.getPath() == null) {
181  log.debug("Setting jsession cookie path to: " + deploymentInfo.getContextPath());
182  cookieConfig.setPath(deploymentInfo.getContextPath());
183  deploymentInfo.setServletSessionConfig(cookieConfig);
184  }
185  ChangeSessionId.turnOffChangeSessionIdOnLogin(deploymentInfo);
186  deploymentInfo.addListener(new ListenerInfo(UndertowNodesRegistrationManagementWrapper.class, new InstanceFactory<UndertowNodesRegistrationManagementWrapper>() {
187 
188  @Override
189  public InstanceHandle<UndertowNodesRegistrationManagementWrapper> createInstance() throws InstantiationException {
190  UndertowNodesRegistrationManagementWrapper listener = new UndertowNodesRegistrationManagementWrapper(nodesRegistrationManagement);
191  return new ImmediateInstanceHandle<UndertowNodesRegistrationManagementWrapper>(listener);
192  }
193 
194  }));
195  }
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

◆ isAuthenticationMechanismPresent()

boolean org.keycloak.adapters.undertow.KeycloakServletExtension.isAuthenticationMechanismPresent ( DeploymentInfo  deploymentInfo,
final String  mechanismName 
)
inlineinherited
58  {
59  LoginConfig loginConfig = deploymentInfo.getLoginConfig();
60  if (loginConfig != null) {
61  for (AuthMethodConfig method : loginConfig.getAuthMethods()) {
62  if (method.getName().equalsIgnoreCase(mechanismName)) {
63  return true;
64  }
65  }
66  }
67  return false;
68  }

メンバ詳解

◆ log

Logger org.keycloak.adapters.wildfly.WildflyKeycloakServletExtension.log = Logger.getLogger(WildflyKeycloakServletExtension.class)
staticprotected

このクラス詳解は次のファイルから抽出されました: