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

公開メンバ関数

 WildflyAuthenticationMechanism (AdapterDeploymentContext deploymentContext, UndertowUserSessionManagement userSessionManagement, NodesRegistrationManagement nodesRegistrationManagement, ConfidentialPortManager portManager, String errorPage)
 
AuthenticationMechanismOutcome authenticate (HttpServerExchange exchange, SecurityContext securityContext)
 
UndertowHttpFacade createFacade (HttpServerExchange exchange)
 
ChallengeResult sendChallenge (HttpServerExchange exchange, SecurityContext securityContext)
 

静的公開変数類

static final AttachmentKey< AuthChallenge > KEYCLOAK_CHALLENGE_ATTACHMENT_KEY = AttachmentKey.create(AuthChallenge.class)
 

限定公開メンバ関数

ServletRequestAuthenticator createRequestAuthenticator (KeycloakDeployment deployment, HttpServerExchange exchange, SecurityContext securityContext, UndertowHttpFacade facade)
 
Integer servePage (HttpServerExchange exchange, String location)
 
int getConfidentilPort (HttpServerExchange exchange)
 
AdapterTokenStore getTokenStore (HttpServerExchange exchange, HttpFacade facade, KeycloakDeployment deployment, SecurityContext securityContext)
 
void registerNotifications (final SecurityContext securityContext)
 
AuthenticationMechanismOutcome keycloakAuthenticate (HttpServerExchange exchange, SecurityContext securityContext, RequestAuthenticator authenticator)
 

限定公開変数類

NodesRegistrationManagement nodesRegistrationManagement
 
ConfidentialPortManager portManager
 
AdapterDeploymentContext deploymentContext
 
UndertowUserSessionManagement sessionManagement
 
String errorPage
 

静的関数

static void sendRedirect (final HttpServerExchange exchange, final String location)
 

詳解

著者
Bill Burke
バージョン
Revision
1

構築子と解体子

◆ WildflyAuthenticationMechanism()

org.keycloak.adapters.wildfly.WildflyAuthenticationMechanism.WildflyAuthenticationMechanism ( AdapterDeploymentContext  deploymentContext,
UndertowUserSessionManagement  userSessionManagement,
NodesRegistrationManagement  nodesRegistrationManagement,
ConfidentialPortManager  portManager,
String  errorPage 
)
inline
41  {
42  super(deploymentContext, userSessionManagement, nodesRegistrationManagement, portManager, errorPage);
43  }
String errorPage
Definition: AbstractUndertowKeycloakAuthMech.java:47
ConfidentialPortManager portManager
Definition: ServletKeycloakAuthMech.java:48
AdapterDeploymentContext deploymentContext
Definition: AbstractUndertowKeycloakAuthMech.java:45
NodesRegistrationManagement nodesRegistrationManagement
Definition: ServletKeycloakAuthMech.java:47

関数詳解

◆ authenticate()

AuthenticationMechanismOutcome org.keycloak.adapters.undertow.ServletKeycloakAuthMech.authenticate ( HttpServerExchange  exchange,
SecurityContext  securityContext 
)
inlineinherited
81  {
82  UndertowHttpFacade facade = createFacade(exchange);
83  KeycloakDeployment deployment = deploymentContext.resolveDeployment(facade);
84  if (!deployment.isConfigured()) {
85  return AuthenticationMechanismOutcome.NOT_ATTEMPTED;
86  }
87 
89 
90  RequestAuthenticator authenticator = createRequestAuthenticator(deployment, exchange, securityContext, facade);
91 
92  return keycloakAuthenticate(exchange, securityContext, authenticator);
93  }
KeycloakDeployment resolveDeployment(HttpFacade facade)
Definition: AdapterDeploymentContext.java:86
AuthenticationMechanismOutcome keycloakAuthenticate(HttpServerExchange exchange, SecurityContext securityContext, RequestAuthenticator authenticator)
Definition: AbstractUndertowKeycloakAuthMech.java:109
RequestAuthenticator createRequestAuthenticator(KeycloakDeployment deployment, HttpServerExchange exchange, SecurityContext securityContext, UndertowHttpFacade facade)
Definition: ServletKeycloakAuthMech.java:95
AdapterDeploymentContext deploymentContext
Definition: AbstractUndertowKeycloakAuthMech.java:45
UndertowHttpFacade createFacade(HttpServerExchange exchange)
Definition: ServletKeycloakAuthMech.java:123
NodesRegistrationManagement nodesRegistrationManagement
Definition: ServletKeycloakAuthMech.java:47
void tryRegister(final KeycloakDeployment resolvedDeployment)
Definition: NodesRegistrationManagement.java:42

◆ createFacade()

UndertowHttpFacade org.keycloak.adapters.undertow.ServletKeycloakAuthMech.createFacade ( HttpServerExchange  exchange)
inlineinherited
123  {
124  return new OIDCServletUndertowHttpFacade(exchange);
125  }

◆ createRequestAuthenticator()

ServletRequestAuthenticator org.keycloak.adapters.wildfly.WildflyAuthenticationMechanism.createRequestAuthenticator ( KeycloakDeployment  deployment,
HttpServerExchange  exchange,
SecurityContext  securityContext,
UndertowHttpFacade  facade 
)
inlineprotected
46  {
47  int confidentialPort = getConfidentilPort(exchange);
48  AdapterTokenStore tokenStore = getTokenStore(exchange, facade, deployment, securityContext);
49  return new WildflyRequestAuthenticator(facade, deployment,
50  confidentialPort, securityContext, exchange, tokenStore);
51  }
int getConfidentilPort(HttpServerExchange exchange)
Definition: ServletKeycloakAuthMech.java:103
AdapterTokenStore getTokenStore(HttpServerExchange exchange, HttpFacade facade, KeycloakDeployment deployment, SecurityContext securityContext)
Definition: ServletKeycloakAuthMech.java:114

◆ getConfidentilPort()

int org.keycloak.adapters.undertow.ServletKeycloakAuthMech.getConfidentilPort ( HttpServerExchange  exchange)
inlineprotectedinherited
103  {
104  int confidentialPort = 8443;
105  if (exchange.getRequestScheme().equalsIgnoreCase("HTTPS")) {
106  confidentialPort = exchange.getHostPort();
107  } else if (portManager != null) {
108  confidentialPort = portManager.getConfidentialPort(exchange);
109  }
110  return confidentialPort;
111  }
ConfidentialPortManager portManager
Definition: ServletKeycloakAuthMech.java:48

◆ getTokenStore()

AdapterTokenStore org.keycloak.adapters.undertow.ServletKeycloakAuthMech.getTokenStore ( HttpServerExchange  exchange,
HttpFacade  facade,
KeycloakDeployment  deployment,
SecurityContext  securityContext 
)
inlineprotectedinherited
114  {
115  if (deployment.getTokenStore() == TokenStore.SESSION) {
116  return new ServletSessionTokenStore(exchange, deployment, sessionManagement, securityContext);
117  } else {
118  return new UndertowCookieTokenStore(facade, deployment, securityContext);
119  }
120  }
UndertowUserSessionManagement sessionManagement
Definition: AbstractUndertowKeycloakAuthMech.java:46

◆ keycloakAuthenticate()

AuthenticationMechanismOutcome org.keycloak.adapters.undertow.AbstractUndertowKeycloakAuthMech.keycloakAuthenticate ( HttpServerExchange  exchange,
SecurityContext  securityContext,
RequestAuthenticator  authenticator 
)
inlineprotectedinherited

Call this inside your authenticate method.

109  {
110  AuthOutcome outcome = authenticator.authenticate();
111  if (outcome == AuthOutcome.AUTHENTICATED) {
112  registerNotifications(securityContext);
113  return AuthenticationMechanismOutcome.AUTHENTICATED;
114  }
115  AuthChallenge challenge = authenticator.getChallenge();
116  if (challenge != null) {
117  exchange.putAttachment(KEYCLOAK_CHALLENGE_ATTACHMENT_KEY, challenge);
118  }
119 
120  if (outcome == AuthOutcome.FAILED) {
121  return AuthenticationMechanismOutcome.NOT_AUTHENTICATED;
122  }
123  return AuthenticationMechanismOutcome.NOT_ATTEMPTED;
124  }
void registerNotifications(final SecurityContext securityContext)
Definition: AbstractUndertowKeycloakAuthMech.java:84
static final AttachmentKey< AuthChallenge > KEYCLOAK_CHALLENGE_ATTACHMENT_KEY
Definition: AbstractUndertowKeycloakAuthMech.java:44

◆ registerNotifications()

void org.keycloak.adapters.undertow.AbstractUndertowKeycloakAuthMech.registerNotifications ( final SecurityContext  securityContext)
inlineprotectedinherited
84  {
85 
86  final NotificationReceiver logoutReceiver = new NotificationReceiver() {
87  @Override
88  public void handleNotification(SecurityNotification notification) {
89  if (notification.getEventType() != SecurityNotification.EventType.LOGGED_OUT) return;
90 
91  HttpServerExchange exchange = notification.getExchange();
92  UndertowHttpFacade facade = createFacade(exchange);
93  KeycloakDeployment deployment = deploymentContext.resolveDeployment(facade);
94  KeycloakSecurityContext ksc = exchange.getAttachment(OIDCUndertowHttpFacade.KEYCLOAK_SECURITY_CONTEXT_KEY);
95  if (!deployment.isBearerOnly() && ksc != null && ksc instanceof RefreshableKeycloakSecurityContext) {
96  ((RefreshableKeycloakSecurityContext) ksc).logout(deployment);
97  }
98  AdapterTokenStore tokenStore = getTokenStore(exchange, facade, deployment, securityContext);
99  tokenStore.logout();
100  }
101  };
102 
103  securityContext.registerNotificationReceiver(logoutReceiver);
104  }
KeycloakDeployment resolveDeployment(HttpFacade facade)
Definition: AdapterDeploymentContext.java:86
UndertowHttpFacade createFacade(HttpServerExchange exchange)
Definition: AbstractUndertowKeycloakAuthMech.java:67
AdapterTokenStore getTokenStore(HttpServerExchange exchange, HttpFacade facade, KeycloakDeployment deployment, SecurityContext securityContext)
Definition: AbstractUndertowKeycloakAuthMech.java:126
AdapterDeploymentContext deploymentContext
Definition: AbstractUndertowKeycloakAuthMech.java:45

◆ sendChallenge()

ChallengeResult org.keycloak.adapters.undertow.AbstractUndertowKeycloakAuthMech.sendChallenge ( HttpServerExchange  exchange,
SecurityContext  securityContext 
)
inlineinherited
56  {
57  AuthChallenge challenge = exchange.getAttachment(KEYCLOAK_CHALLENGE_ATTACHMENT_KEY);
58  if (challenge != null) {
59  UndertowHttpFacade facade = createFacade(exchange);
60  if (challenge.challenge(facade)) {
61  return new ChallengeResult(true, exchange.getResponseCode());
62  }
63  }
64  return new ChallengeResult(false);
65  }
static final AttachmentKey< AuthChallenge > KEYCLOAK_CHALLENGE_ATTACHMENT_KEY
Definition: AbstractUndertowKeycloakAuthMech.java:44
UndertowHttpFacade createFacade(HttpServerExchange exchange)
Definition: AbstractUndertowKeycloakAuthMech.java:67

◆ sendRedirect()

static void org.keycloak.adapters.undertow.AbstractUndertowKeycloakAuthMech.sendRedirect ( final HttpServerExchange  exchange,
final String  location 
)
inlinestaticpackageinherited
76  {
77  // TODO - String concatenation to construct URLS is extremely error prone - switch to a URI which will better handle this.
78  String loc = exchange.getRequestScheme() + "://" + exchange.getHostAndPort() + location;
79  exchange.getResponseHeaders().put(Headers.LOCATION, loc);
80  }

◆ servePage()

Integer org.keycloak.adapters.undertow.ServletKeycloakAuthMech.servePage ( HttpServerExchange  exchange,
String  location 
)
inlineprotectedinherited
59  {
60  final ServletRequestContext servletRequestContext = exchange.getAttachment(ServletRequestContext.ATTACHMENT_KEY);
61  ServletRequest req = servletRequestContext.getServletRequest();
62  ServletResponse resp = servletRequestContext.getServletResponse();
63  RequestDispatcher disp = req.getRequestDispatcher(location);
64  //make sure the login page is never cached
65  exchange.getResponseHeaders().add(Headers.CACHE_CONTROL, "no-cache, no-store, must-revalidate");
66  exchange.getResponseHeaders().add(Headers.PRAGMA, "no-cache");
67  exchange.getResponseHeaders().add(Headers.EXPIRES, "0");
68 
69 
70  try {
71  disp.forward(req, resp);
72  } catch (ServletException e) {
73  throw new RuntimeException(e);
74  } catch (IOException e) {
75  throw new RuntimeException(e);
76  }
77  return null;
78  }

メンバ詳解

◆ deploymentContext

AdapterDeploymentContext org.keycloak.adapters.undertow.AbstractUndertowKeycloakAuthMech.deploymentContext
protectedinherited

◆ errorPage

String org.keycloak.adapters.undertow.AbstractUndertowKeycloakAuthMech.errorPage
protectedinherited

◆ KEYCLOAK_CHALLENGE_ATTACHMENT_KEY

final AttachmentKey<AuthChallenge> org.keycloak.adapters.undertow.AbstractUndertowKeycloakAuthMech.KEYCLOAK_CHALLENGE_ATTACHMENT_KEY = AttachmentKey.create(AuthChallenge.class)
staticinherited

◆ nodesRegistrationManagement

NodesRegistrationManagement org.keycloak.adapters.undertow.ServletKeycloakAuthMech.nodesRegistrationManagement
protectedinherited

◆ portManager

ConfidentialPortManager org.keycloak.adapters.undertow.ServletKeycloakAuthMech.portManager
protectedinherited

◆ sessionManagement

UndertowUserSessionManagement org.keycloak.adapters.undertow.AbstractUndertowKeycloakAuthMech.sessionManagement
protectedinherited

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