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

公開メンバ関数

 ServletSessionTokenStore (HttpServerExchange exchange, KeycloakDeployment deployment, UndertowUserSessionManagement sessionManagement, SecurityContext securityContext)
 
void checkCurrentToken ()
 
boolean isCached (RequestAuthenticator authenticator)
 
void saveAccountInfo (OidcKeycloakAccount account)
 
void logout ()
 
void refreshCallback (RefreshableKeycloakSecurityContext securityContext)
 
void saveRequest ()
 
boolean restoreRequest ()
 

限定公開メンバ関数

HttpSession getSession (boolean create)
 

静的限定公開変数類

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

非公開変数類

final HttpServerExchange exchange
 
final KeycloakDeployment deployment
 
final UndertowUserSessionManagement sessionManagement
 
final SecurityContext securityContext
 

詳解

Per-request object. Storage of tokens in servlet HTTP session.

著者
Marek Posolda

構築子と解体子

◆ ServletSessionTokenStore()

org.keycloak.adapters.undertow.ServletSessionTokenStore.ServletSessionTokenStore ( HttpServerExchange  exchange,
KeycloakDeployment  deployment,
UndertowUserSessionManagement  sessionManagement,
SecurityContext  securityContext 
)
inline
49  {
50  this.exchange = exchange;
51  this.deployment = deployment;
54  }
final UndertowUserSessionManagement sessionManagement
Definition: ServletSessionTokenStore.java:45
final HttpServerExchange exchange
Definition: ServletSessionTokenStore.java:43
final KeycloakDeployment deployment
Definition: ServletSessionTokenStore.java:44
final SecurityContext securityContext
Definition: ServletSessionTokenStore.java:46

関数詳解

◆ checkCurrentToken()

void org.keycloak.adapters.undertow.ServletSessionTokenStore.checkCurrentToken ( )
inline

org.keycloak.adapters.AdapterTokenStoreを実装しています。

57  {
58  // no-op on undertow
59  }

◆ getSession()

HttpSession org.keycloak.adapters.undertow.ServletSessionTokenStore.getSession ( boolean  create)
inlineprotected
152  {
153  final ServletRequestContext servletRequestContext = exchange.getAttachment(ServletRequestContext.ATTACHMENT_KEY);
154  HttpServletRequest req = (HttpServletRequest) servletRequestContext.getServletRequest();
155  return req.getSession(create);
156  }
final HttpServerExchange exchange
Definition: ServletSessionTokenStore.java:43

◆ isCached()

boolean org.keycloak.adapters.undertow.ServletSessionTokenStore.isCached ( RequestAuthenticator  authenticator)
inline

org.keycloak.adapters.AdapterTokenStoreを実装しています。

62  {
63  HttpSession session = getSession(false);
64  if (session == null) {
65  log.debug("session was null, returning null");
66  return false;
67  }
68  KeycloakUndertowAccount account = null;
69  try {
70  account = (KeycloakUndertowAccount)session.getAttribute(KeycloakUndertowAccount.class.getName());
71  } catch (IllegalStateException e) {
72  log.debug("session was invalidated. Return false.");
73  return false;
74  }
75  if (account == null) {
76  log.debug("Account was not in session, returning null");
77  return false;
78  }
79 
80  if (!deployment.getRealm().equals(account.getKeycloakSecurityContext().getRealm())) {
81  log.debug("Account in session belongs to a different realm than for this request.");
82  return false;
83  }
84 
85  account.setCurrentRequestInfo(deployment, this);
86  if (account.checkActive()) {
87  log.debug("Cached account found");
88  securityContext.authenticationComplete(account, "KEYCLOAK", false);
89  ((AbstractUndertowRequestAuthenticator)authenticator).propagateKeycloakContext(account);
91  return true;
92  } else {
93  log.debug("Refresh failed. Account was not active. Returning null and invalidating Http session");
94  try {
95  session.removeAttribute(KeycloakUndertowAccount.class.getName());
96  session.removeAttribute(KeycloakSecurityContext.class.getName());
97  session.invalidate();
98  } catch (Exception e) {
99  log.debug("Failed to invalidate session, might already be invalidated");
100  }
101  return false;
102  }
103  }
String getRealm()
Definition: KeycloakDeployment.java:111
final KeycloakDeployment deployment
Definition: ServletSessionTokenStore.java:44
static Logger log
Definition: ServletSessionTokenStore.java:41
HttpSession getSession(boolean create)
Definition: ServletSessionTokenStore.java:152
boolean restoreRequest()
Definition: ServletSessionTokenStore.java:145
final SecurityContext securityContext
Definition: ServletSessionTokenStore.java:46

◆ logout()

void org.keycloak.adapters.undertow.ServletSessionTokenStore.logout ( )
inline

org.keycloak.adapters.AdapterTokenStoreを実装しています。

115  {
116  final ServletRequestContext servletRequestContext = exchange.getAttachment(ServletRequestContext.ATTACHMENT_KEY);
117  HttpServletRequest req = (HttpServletRequest) servletRequestContext.getServletRequest();
118  req.removeAttribute(KeycloakUndertowAccount.class.getName());
119  req.removeAttribute(KeycloakSecurityContext.class.getName());
120  HttpSession session = req.getSession(false);
121  if (session == null) return;
122  try {
123  KeycloakUndertowAccount account = (KeycloakUndertowAccount) session.getAttribute(KeycloakUndertowAccount.class.getName());
124  if (account == null) return;
125  session.removeAttribute(KeycloakSecurityContext.class.getName());
126  session.removeAttribute(KeycloakUndertowAccount.class.getName());
127  } catch (IllegalStateException ise) {
128  // Session may be already logged-out in case that app has adminUrl
129  log.debugf("Session %s logged-out already", session.getId());
130  }
131  }
final HttpServerExchange exchange
Definition: ServletSessionTokenStore.java:43
static Logger log
Definition: ServletSessionTokenStore.java:41

◆ refreshCallback()

void org.keycloak.adapters.undertow.ServletSessionTokenStore.refreshCallback ( RefreshableKeycloakSecurityContext  securityContext)
inline

org.keycloak.adapters.AdapterTokenStoreを実装しています。

134  {
135  // no-op
136  }

◆ restoreRequest()

boolean org.keycloak.adapters.undertow.ServletSessionTokenStore.restoreRequest ( )
inline
145  {
146  HttpSession session = getSession(false);
147  if (session == null) return false;
148  SavedRequest.tryRestoreRequest(exchange, session);
149  return false;
150  }
final HttpServerExchange exchange
Definition: ServletSessionTokenStore.java:43
HttpSession getSession(boolean create)
Definition: ServletSessionTokenStore.java:152

◆ saveAccountInfo()

void org.keycloak.adapters.undertow.ServletSessionTokenStore.saveAccountInfo ( OidcKeycloakAccount  account)
inline

org.keycloak.adapters.AdapterTokenStoreを実装しています。

106  {
107  final ServletRequestContext servletRequestContext = exchange.getAttachment(ServletRequestContext.ATTACHMENT_KEY);
108  HttpSession session = getSession(true);
109  session.setAttribute(KeycloakUndertowAccount.class.getName(), account);
110  session.setAttribute(KeycloakSecurityContext.class.getName(), account.getKeycloakSecurityContext());
111  sessionManagement.login(servletRequestContext.getDeployment().getSessionManager());
112  }
final UndertowUserSessionManagement sessionManagement
Definition: ServletSessionTokenStore.java:45
final HttpServerExchange exchange
Definition: ServletSessionTokenStore.java:43
HttpSession getSession(boolean create)
Definition: ServletSessionTokenStore.java:152

◆ saveRequest()

void org.keycloak.adapters.undertow.ServletSessionTokenStore.saveRequest ( )
inline
139  {
140  SavedRequest.trySaveRequest(exchange);
141 
142  }
final HttpServerExchange exchange
Definition: ServletSessionTokenStore.java:43

メンバ詳解

◆ deployment

final KeycloakDeployment org.keycloak.adapters.undertow.ServletSessionTokenStore.deployment
private

◆ exchange

final HttpServerExchange org.keycloak.adapters.undertow.ServletSessionTokenStore.exchange
private

◆ log

Logger org.keycloak.adapters.undertow.ServletSessionTokenStore.log = Logger.getLogger(ServletSessionTokenStore.class)
staticprotected

◆ securityContext

final SecurityContext org.keycloak.adapters.undertow.ServletSessionTokenStore.securityContext
private

◆ sessionManagement

final UndertowUserSessionManagement org.keycloak.adapters.undertow.ServletSessionTokenStore.sessionManagement
private

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