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

公開メンバ関数

 AbstractUndertowKeycloakAuthMech (AdapterDeploymentContext deploymentContext, UndertowUserSessionManagement sessionManagement, String errorPage)
 
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)
 

限定公開変数類

AdapterDeploymentContext deploymentContext
 
UndertowUserSessionManagement sessionManagement
 
String errorPage
 

静的関数

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

詳解

Abstract base class for a Keycloak-enabled Undertow AuthenticationMechanism.

著者
Stan Silvert ssilv.nosp@m.ert@.nosp@m.redha.nosp@m.t.co.nosp@m.m (C) 2014 Red Hat Inc.

構築子と解体子

◆ AbstractUndertowKeycloakAuthMech()

org.keycloak.adapters.undertow.AbstractUndertowKeycloakAuthMech.AbstractUndertowKeycloakAuthMech ( AdapterDeploymentContext  deploymentContext,
UndertowUserSessionManagement  sessionManagement,
String  errorPage 
)
inline
49  {
52  this.errorPage = errorPage;
53  }
String errorPage
Definition: AbstractUndertowKeycloakAuthMech.java:47
AdapterDeploymentContext deploymentContext
Definition: AbstractUndertowKeycloakAuthMech.java:45
UndertowUserSessionManagement sessionManagement
Definition: AbstractUndertowKeycloakAuthMech.java:46

関数詳解

◆ createFacade()

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

◆ getTokenStore()

AdapterTokenStore org.keycloak.adapters.undertow.AbstractUndertowKeycloakAuthMech.getTokenStore ( HttpServerExchange  exchange,
HttpFacade  facade,
KeycloakDeployment  deployment,
SecurityContext  securityContext 
)
inlineprotected
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 
)
inlineprotected

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)
inlineprotected
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 
)
inline
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 
)
inlinestaticpackage
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 
)
inlineprotected
71  {
72  sendRedirect(exchange, location);
73  return StatusCodes.TEMPORARY_REDIRECT;
74  }
static void sendRedirect(final HttpServerExchange exchange, final String location)
Definition: AbstractUndertowKeycloakAuthMech.java:76

メンバ詳解

◆ deploymentContext

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

◆ errorPage

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

◆ KEYCLOAK_CHALLENGE_ATTACHMENT_KEY

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

◆ sessionManagement

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

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