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

クラス

class  SerializableKeycloakAccount
 

公開メンバ関数

 CatalinaSessionTokenStore (Request request, KeycloakDeployment deployment, CatalinaUserSessionManagement sessionManagement, GenericPrincipalFactory principalFactory, AbstractKeycloakAuthenticatorValve valve)
 
void checkCurrentToken ()
 
boolean isCached (RequestAuthenticator authenticator)
 
void saveAccountInfo (OidcKeycloakAccount account)
 
void logout ()
 
void refreshCallback (RefreshableKeycloakSecurityContext securityContext)
 
void saveRequest ()
 
boolean restoreRequest ()
 

限定公開メンバ関数

void cleanSession (Session catalinaSession)
 

限定公開変数類

GenericPrincipalFactory principalFactory
 
Request request
 
AbstractKeycloakAuthenticatorValve valve
 

非公開変数類

KeycloakDeployment deployment
 
CatalinaUserSessionManagement sessionManagement
 

静的非公開変数類

static final Logger log = Logger.getLogger("" + CatalinaSessionTokenStore.class)
 

詳解

著者
Marek Posolda

構築子と解体子

◆ CatalinaSessionTokenStore()

org.keycloak.adapters.tomcat.CatalinaSessionTokenStore.CatalinaSessionTokenStore ( Request  request,
KeycloakDeployment  deployment,
CatalinaUserSessionManagement  sessionManagement,
GenericPrincipalFactory  principalFactory,
AbstractKeycloakAuthenticatorValve  valve 
)
inline
50  {
51  super(request, valve);
52  this.deployment = deployment;
55  }
CatalinaUserSessionManagement sessionManagement
Definition: CatalinaSessionTokenStore.java:43
KeycloakDeployment deployment
Definition: CatalinaSessionTokenStore.java:42
Request request
Definition: CatalinaAdapterSessionStore.java:30
AbstractKeycloakAuthenticatorValve valve
Definition: CatalinaAdapterSessionStore.java:31
GenericPrincipalFactory principalFactory
Definition: CatalinaSessionTokenStore.java:44

関数詳解

◆ checkCurrentToken()

void org.keycloak.adapters.tomcat.CatalinaSessionTokenStore.checkCurrentToken ( )
inline

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

58  {
59  Session catalinaSession = request.getSessionInternal(false);
60  if (catalinaSession == null) return;
61  SerializableKeycloakAccount account = (SerializableKeycloakAccount) catalinaSession.getSession().getAttribute(SerializableKeycloakAccount.class.getName());
62  if (account == null) {
63  return;
64  }
65 
66  RefreshableKeycloakSecurityContext session = account.getKeycloakSecurityContext();
67  if (session == null) return;
68 
69  // just in case session got serialized
70  if (session.getDeployment() == null) session.setCurrentRequestInfo(deployment, this);
71 
72  if (session.isActive() && !session.getDeployment().isAlwaysRefreshToken()) {
73  request.setAttribute(KeycloakSecurityContext.class.getName(), session);
74  request.setUserPrincipal(account.getPrincipal());
75  request.setAuthType("KEYCLOAK");
76  return;
77  }
78 
79  // FYI: A refresh requires same scope, so same roles will be set. Otherwise, refresh will fail and token will
80  // not be updated
81  boolean success = session.refreshExpiredToken(false);
82  if (success && session.isActive()) {
83  request.setAttribute(KeycloakSecurityContext.class.getName(), session);
84  request.setUserPrincipal(account.getPrincipal());
85  request.setAuthType("KEYCLOAK");
86  return;
87  }
88 
89  // Refresh failed, so user is already logged out from keycloak. Cleanup and expire our session
90  log.fine("Cleanup and expire session " + catalinaSession.getId() + " after failed refresh");
91  request.setUserPrincipal(null);
92  request.setAuthType(null);
93  cleanSession(catalinaSession);
94  catalinaSession.expire();
95  }
KeycloakDeployment deployment
Definition: CatalinaSessionTokenStore.java:42
void cleanSession(Session catalinaSession)
Definition: CatalinaSessionTokenStore.java:97
static final Logger log
Definition: CatalinaSessionTokenStore.java:40
Request request
Definition: CatalinaAdapterSessionStore.java:30

◆ cleanSession()

void org.keycloak.adapters.tomcat.CatalinaSessionTokenStore.cleanSession ( Session  catalinaSession)
inlineprotected
97  {
98  catalinaSession.getSession().removeAttribute(KeycloakSecurityContext.class.getName());
99  catalinaSession.getSession().removeAttribute(SerializableKeycloakAccount.class.getName());
100  catalinaSession.getSession().removeAttribute(OidcKeycloakAccount.class.getName());
101  catalinaSession.setPrincipal(null);
102  catalinaSession.setAuthType(null);
103  }

◆ isCached()

boolean org.keycloak.adapters.tomcat.CatalinaSessionTokenStore.isCached ( RequestAuthenticator  authenticator)
inline

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

106  {
107  Session session = request.getSessionInternal(false);
108  if (session == null) return false;
109  SerializableKeycloakAccount account = (SerializableKeycloakAccount) session.getSession().getAttribute(SerializableKeycloakAccount.class.getName());
110  if (account == null) {
111  return false;
112  }
113 
114  log.fine("remote logged in already. Establish state from session");
115 
116  RefreshableKeycloakSecurityContext securityContext = account.getKeycloakSecurityContext();
117 
118  if (!deployment.getRealm().equals(securityContext.getRealm())) {
119  log.fine("Account from cookie is from a different realm than for the request.");
120  cleanSession(session);
121  return false;
122  }
123 
124  securityContext.setCurrentRequestInfo(deployment, this);
125  request.setAttribute(KeycloakSecurityContext.class.getName(), securityContext);
126  GenericPrincipal principal = (GenericPrincipal) session.getPrincipal();
127  // in clustered environment in JBossWeb, principal is not serialized or saved
128  if (principal == null) {
129  principal = principalFactory.createPrincipal(request.getContext().getRealm(), account.getPrincipal(), account.getRoles());
130  session.setPrincipal(principal);
131  session.setAuthType("KEYCLOAK");
132 
133  }
134  request.setUserPrincipal(principal);
135  request.setAuthType("KEYCLOAK");
136 
137  restoreRequest();
138  return true;
139  }
String getRealm()
Definition: KeycloakDeployment.java:111
KeycloakDeployment deployment
Definition: CatalinaSessionTokenStore.java:42
void cleanSession(Session catalinaSession)
Definition: CatalinaSessionTokenStore.java:97
boolean restoreRequest()
Definition: CatalinaAdapterSessionStore.java:46
static final Logger log
Definition: CatalinaSessionTokenStore.java:40
Request request
Definition: CatalinaAdapterSessionStore.java:30
GenericPrincipalFactory principalFactory
Definition: CatalinaSessionTokenStore.java:44

◆ logout()

void org.keycloak.adapters.tomcat.CatalinaSessionTokenStore.logout ( )
inline

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

186  {
187  Session session = request.getSessionInternal(false);
188  if (session != null) {
189  cleanSession(session);
190  }
191  }
void cleanSession(Session catalinaSession)
Definition: CatalinaSessionTokenStore.java:97
Request request
Definition: CatalinaAdapterSessionStore.java:30

◆ refreshCallback()

void org.keycloak.adapters.tomcat.CatalinaSessionTokenStore.refreshCallback ( RefreshableKeycloakSecurityContext  securityContext)
inline

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

194  {
195  // no-op
196  }

◆ restoreRequest()

boolean org.keycloak.adapters.tomcat.CatalinaAdapterSessionStore.restoreRequest ( )
inlineinherited
46  {
48  }
boolean keycloakRestoreRequest(Request request)
Definition: AbstractKeycloakAuthenticatorValve.java:236
Request request
Definition: CatalinaAdapterSessionStore.java:30
AbstractKeycloakAuthenticatorValve valve
Definition: CatalinaAdapterSessionStore.java:31

◆ saveAccountInfo()

void org.keycloak.adapters.tomcat.CatalinaSessionTokenStore.saveAccountInfo ( OidcKeycloakAccount  account)
inline

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

169  {
170  RefreshableKeycloakSecurityContext securityContext = (RefreshableKeycloakSecurityContext) account.getKeycloakSecurityContext();
171  Set<String> roles = account.getRoles();
172  GenericPrincipal principal = principalFactory.createPrincipal(request.getContext().getRealm(), account.getPrincipal(), roles);
173 
174  SerializableKeycloakAccount sAccount = new SerializableKeycloakAccount(roles, account.getPrincipal(), securityContext);
175  Session session = request.getSessionInternal(true);
176  session.setPrincipal(principal);
177  session.setAuthType("KEYCLOAK");
178  session.getSession().setAttribute(SerializableKeycloakAccount.class.getName(), sAccount);
179  session.getSession().setAttribute(KeycloakSecurityContext.class.getName(), account.getKeycloakSecurityContext());
180  String username = securityContext.getToken().getSubject();
181  log.fine("userSessionManagement.login: " + username);
182  this.sessionManagement.login(session);
183  }
CatalinaUserSessionManagement sessionManagement
Definition: CatalinaSessionTokenStore.java:43
static final Logger log
Definition: CatalinaSessionTokenStore.java:40
Request request
Definition: CatalinaAdapterSessionStore.java:30
GenericPrincipalFactory principalFactory
Definition: CatalinaSessionTokenStore.java:44

◆ saveRequest()

void org.keycloak.adapters.tomcat.CatalinaAdapterSessionStore.saveRequest ( )
inlineinherited
38  {
39  try {
41  } catch (IOException e) {
42  throw new RuntimeException(e);
43  }
44  }
void keycloakSaveRequest(Request request)
Definition: AbstractKeycloakAuthenticatorValve.java:232
Request request
Definition: CatalinaAdapterSessionStore.java:30
AbstractKeycloakAuthenticatorValve valve
Definition: CatalinaAdapterSessionStore.java:31

メンバ詳解

◆ deployment

KeycloakDeployment org.keycloak.adapters.tomcat.CatalinaSessionTokenStore.deployment
private

◆ log

final Logger org.keycloak.adapters.tomcat.CatalinaSessionTokenStore.log = Logger.getLogger("" + CatalinaSessionTokenStore.class)
staticprivate

◆ principalFactory

GenericPrincipalFactory org.keycloak.adapters.tomcat.CatalinaSessionTokenStore.principalFactory
protected

◆ request

Request org.keycloak.adapters.tomcat.CatalinaAdapterSessionStore.request
protectedinherited

◆ sessionManagement

CatalinaUserSessionManagement org.keycloak.adapters.tomcat.CatalinaSessionTokenStore.sessionManagement
private

◆ valve

AbstractKeycloakAuthenticatorValve org.keycloak.adapters.tomcat.CatalinaAdapterSessionStore.valve
protectedinherited

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