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

公開メンバ関数

 UndertowAuthenticationMechanism (AdapterDeploymentContext deploymentContext, UndertowUserSessionManagement sessionManagement, NodesRegistrationManagement nodesRegistrationManagement, int confidentialPort, String errorPage)
 
AuthenticationMechanismOutcome authenticate (HttpServerExchange exchange, SecurityContext securityContext)
 
ChallengeResult sendChallenge (HttpServerExchange exchange, SecurityContext securityContext)
 
UndertowHttpFacade createFacade (HttpServerExchange exchange)
 

静的公開変数類

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

限定公開メンバ関数

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

限定公開変数類

NodesRegistrationManagement nodesRegistrationManagement
 
int confidentialPort
 
AdapterDeploymentContext deploymentContext
 
UndertowUserSessionManagement sessionManagement
 
String errorPage
 

静的関数

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

詳解

著者
Bill Burke
バージョン
Revision
1

構築子と解体子

◆ UndertowAuthenticationMechanism()

org.keycloak.adapters.undertow.UndertowAuthenticationMechanism.UndertowAuthenticationMechanism ( AdapterDeploymentContext  deploymentContext,
UndertowUserSessionManagement  sessionManagement,
NodesRegistrationManagement  nodesRegistrationManagement,
int  confidentialPort,
String  errorPage 
)
inline
37  {
41  }
String errorPage
Definition: AbstractUndertowKeycloakAuthMech.java:47
int confidentialPort
Definition: UndertowAuthenticationMechanism.java:34
AdapterDeploymentContext deploymentContext
Definition: AbstractUndertowKeycloakAuthMech.java:45
UndertowUserSessionManagement sessionManagement
Definition: AbstractUndertowKeycloakAuthMech.java:46
NodesRegistrationManagement nodesRegistrationManagement
Definition: UndertowAuthenticationMechanism.java:33

関数詳解

◆ authenticate()

AuthenticationMechanismOutcome org.keycloak.adapters.undertow.UndertowAuthenticationMechanism.authenticate ( HttpServerExchange  exchange,
SecurityContext  securityContext 
)
inline
44  {
45  UndertowHttpFacade facade = createFacade(exchange);
46  KeycloakDeployment deployment = deploymentContext.resolveDeployment(facade);
47  if (!deployment.isConfigured()) {
48  return AuthenticationMechanismOutcome.NOT_ATTEMPTED;
49  }
50 
52 
53  AdapterTokenStore tokenStore = getTokenStore(exchange, facade, deployment, securityContext);
54  RequestAuthenticator authenticator = new UndertowRequestAuthenticator(facade, deployment, confidentialPort, securityContext, exchange, tokenStore);
55 
56  return keycloakAuthenticate(exchange, securityContext, authenticator);
57  }
KeycloakDeployment resolveDeployment(HttpFacade facade)
Definition: AdapterDeploymentContext.java:86
AuthenticationMechanismOutcome keycloakAuthenticate(HttpServerExchange exchange, SecurityContext securityContext, RequestAuthenticator authenticator)
Definition: AbstractUndertowKeycloakAuthMech.java:109
UndertowHttpFacade createFacade(HttpServerExchange exchange)
Definition: AbstractUndertowKeycloakAuthMech.java:67
AdapterTokenStore getTokenStore(HttpServerExchange exchange, HttpFacade facade, KeycloakDeployment deployment, SecurityContext securityContext)
Definition: AbstractUndertowKeycloakAuthMech.java:126
int confidentialPort
Definition: UndertowAuthenticationMechanism.java:34
AdapterDeploymentContext deploymentContext
Definition: AbstractUndertowKeycloakAuthMech.java:45
NodesRegistrationManagement nodesRegistrationManagement
Definition: UndertowAuthenticationMechanism.java:33
void tryRegister(final KeycloakDeployment resolvedDeployment)
Definition: NodesRegistrationManagement.java:42

◆ createFacade()

UndertowHttpFacade org.keycloak.adapters.undertow.AbstractUndertowKeycloakAuthMech.createFacade ( HttpServerExchange  exchange)
inlineinherited
67  {
68  return new OIDCUndertowHttpFacade(exchange);
69  }

◆ getTokenStore()

AdapterTokenStore org.keycloak.adapters.undertow.AbstractUndertowKeycloakAuthMech.getTokenStore ( HttpServerExchange  exchange,
HttpFacade  facade,
KeycloakDeployment  deployment,
SecurityContext  securityContext 
)
inlineprotectedinherited
126  {
127  if (deployment.getTokenStore() == TokenStore.SESSION) {
128  return new UndertowSessionTokenStore(exchange, deployment, sessionManagement, securityContext);
129  } else {
130  return new UndertowCookieTokenStore(facade, deployment, securityContext);
131  }
132  }
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.AbstractUndertowKeycloakAuthMech.servePage ( final HttpServerExchange  exchange,
final String  location 
)
inlineprotectedinherited
71  {
72  sendRedirect(exchange, location);
73  return StatusCodes.TEMPORARY_REDIRECT;
74  }
static void sendRedirect(final HttpServerExchange exchange, final String location)
Definition: AbstractUndertowKeycloakAuthMech.java:76

メンバ詳解

◆ confidentialPort

int org.keycloak.adapters.undertow.UndertowAuthenticationMechanism.confidentialPort
protected

◆ 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.UndertowAuthenticationMechanism.nodesRegistrationManagement
protected

◆ sessionManagement

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

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