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

公開メンバ関数

 InfinispanAuthenticationSessionProvider (KeycloakSession session, InfinispanKeyGenerator keyGenerator, Cache< String, RootAuthenticationSessionEntity > cache)
 
RootAuthenticationSessionModel createRootAuthenticationSession (RealmModel realm)
 
RootAuthenticationSessionModel createRootAuthenticationSession (String id, RealmModel realm)
 
void removeExpired (RealmModel realm)
 
void onRealmRemoved (RealmModel realm)
 
void onClientRemoved (RealmModel realm, ClientModel client)
 
void updateNonlocalSessionAuthNotes (AuthenticationSessionCompoundId compoundId, Map< String, String > authNotesFragment)
 
RootAuthenticationSessionModel getRootAuthenticationSession (RealmModel realm, String authenticationSessionId)
 
void removeRootAuthenticationSession (RealmModel realm, RootAuthenticationSessionModel authenticationSession)
 
void close ()
 
Cache< String, RootAuthenticationSessionEntitygetCache ()
 

限定公開メンバ関数

void onRealmRemovedEvent (String realmId)
 
void onClientRemovedEvent (String realmId, String clientUuid)
 
String generateTabId ()
 

限定公開変数類

final InfinispanKeycloakTransaction tx
 
final SessionEventsSenderTransaction clusterEventsSenderTx
 

非公開メンバ関数

RootAuthenticationSessionAdapter wrap (RealmModel realm, RootAuthenticationSessionEntity entity)
 
RootAuthenticationSessionEntity getRootAuthenticationSessionEntity (String authSessionId)
 

非公開変数類

final KeycloakSession session
 
final Cache< String, RootAuthenticationSessionEntitycache
 
final InfinispanKeyGenerator keyGenerator
 

静的非公開変数類

static final Logger log = Logger.getLogger(InfinispanAuthenticationSessionProvider.class)
 

詳解

著者
Marek Posolda

構築子と解体子

◆ InfinispanAuthenticationSessionProvider()

org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.InfinispanAuthenticationSessionProvider ( KeycloakSession  session,
InfinispanKeyGenerator  keyGenerator,
Cache< String, RootAuthenticationSessionEntity cache 
)
inline
56  {
57  this.session = session;
58  this.cache = cache;
60 
61  this.tx = new InfinispanKeycloakTransaction();
62  this.clusterEventsSenderTx = new SessionEventsSenderTransaction(session);
63 
66  }
final SessionEventsSenderTransaction clusterEventsSenderTx
Definition: InfinispanAuthenticationSessionProvider.java:54
KeycloakTransactionManager getTransactionManager()
final InfinispanKeyGenerator keyGenerator
Definition: InfinispanAuthenticationSessionProvider.java:52
final KeycloakSession session
Definition: InfinispanAuthenticationSessionProvider.java:50
final InfinispanKeycloakTransaction tx
Definition: InfinispanAuthenticationSessionProvider.java:53
final Cache< String, RootAuthenticationSessionEntity > cache
Definition: InfinispanAuthenticationSessionProvider.java:51
void enlistAfterCompletion(KeycloakTransaction transaction)

関数詳解

◆ close()

void org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.close ( )
inline

org.keycloak.provider.Providerを実装しています。

195  {
196 
197  }

◆ createRootAuthenticationSession() [1/2]

RootAuthenticationSessionModel org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.createRootAuthenticationSession ( RealmModel  realm)
inline

org.keycloak.sessions.AuthenticationSessionProviderを実装しています。

69  {
71  return createRootAuthenticationSession(id, realm);
72  }
String generateKeyString(KeycloakSession session, Cache< String, ?> cache)
Definition: InfinispanKeyGenerator.java:45
final InfinispanKeyGenerator keyGenerator
Definition: InfinispanAuthenticationSessionProvider.java:52
final KeycloakSession session
Definition: InfinispanAuthenticationSessionProvider.java:50
RootAuthenticationSessionModel createRootAuthenticationSession(RealmModel realm)
Definition: InfinispanAuthenticationSessionProvider.java:69
final Cache< String, RootAuthenticationSessionEntity > cache
Definition: InfinispanAuthenticationSessionProvider.java:51

◆ createRootAuthenticationSession() [2/2]

RootAuthenticationSessionModel org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.createRootAuthenticationSession ( String  id,
RealmModel  realm 
)
inline

org.keycloak.sessions.AuthenticationSessionProviderを実装しています。

76  {
77  RootAuthenticationSessionEntity entity = new RootAuthenticationSessionEntity();
78  entity.setId(id);
79  entity.setRealmId(realm.getId());
80  entity.setTimestamp(Time.currentTime());
81 
82  tx.put(cache, id, entity);
83 
84  return wrap(realm, entity);
85  }
RootAuthenticationSessionAdapter wrap(RealmModel realm, RootAuthenticationSessionEntity entity)
Definition: InfinispanAuthenticationSessionProvider.java:88
final InfinispanKeycloakTransaction tx
Definition: InfinispanAuthenticationSessionProvider.java:53
final Cache< String, RootAuthenticationSessionEntity > cache
Definition: InfinispanAuthenticationSessionProvider.java:51
public< K, V > void put(Cache< K, V > cache, K key, V value)
Definition: InfinispanKeycloakTransaction.java:79

◆ generateTabId()

String org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.generateTabId ( )
inlineprotected
204  {
205  return Base64Url.encode(KeycloakModelUtils.generateSecret(8));
206  }

◆ getCache()

Cache<String, RootAuthenticationSessionEntity> org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.getCache ( )
inline
199  {
200  return cache;
201  }
final Cache< String, RootAuthenticationSessionEntity > cache
Definition: InfinispanAuthenticationSessionProvider.java:51

◆ getRootAuthenticationSession()

RootAuthenticationSessionModel org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.getRootAuthenticationSession ( RealmModel  realm,
String  authenticationSessionId 
)
inline

org.keycloak.sessions.AuthenticationSessionProviderを実装しています。

183  {
184  RootAuthenticationSessionEntity entity = getRootAuthenticationSessionEntity(authenticationSessionId);
185  return wrap(realm, entity);
186  }
RootAuthenticationSessionAdapter wrap(RealmModel realm, RootAuthenticationSessionEntity entity)
Definition: InfinispanAuthenticationSessionProvider.java:88
RootAuthenticationSessionEntity getRootAuthenticationSessionEntity(String authSessionId)
Definition: InfinispanAuthenticationSessionProvider.java:93

◆ getRootAuthenticationSessionEntity()

RootAuthenticationSessionEntity org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.getRootAuthenticationSessionEntity ( String  authSessionId)
inlineprivate
93  {
94  // Chance created in this transaction
95  RootAuthenticationSessionEntity entity = tx.get(cache, authSessionId);
96 
97  if (entity == null) {
98  entity = cache.get(authSessionId);
99  }
100 
101  return entity;
102  }
public< K, V > V get(Cache< K, V > cache, K key)
Definition: InfinispanKeycloakTransaction.java:204
final InfinispanKeycloakTransaction tx
Definition: InfinispanAuthenticationSessionProvider.java:53
final Cache< String, RootAuthenticationSessionEntity > cache
Definition: InfinispanAuthenticationSessionProvider.java:51

◆ onClientRemoved()

void org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.onClientRemoved ( RealmModel  realm,
ClientModel  client 
)
inline

org.keycloak.sessions.AuthenticationSessionProviderを実装しています。

153  {
154  // No update anything on clientRemove for now. AuthenticationSessions of removed client will be handled at runtime if needed.
155 
156 // clusterEventsSenderTx.addEvent(
157 // ClientRemovedSessionEvent.create(session, InfinispanAuthenticationSessionProviderFactory.CLIENT_REMOVED_AUTHSESSION_EVENT, realm.getId(), false, client.getId()),
158 // ClusterProvider.DCNotify.ALL_DCS);
159  }

◆ onClientRemovedEvent()

void org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.onClientRemovedEvent ( String  realmId,
String  clientUuid 
)
inlineprotected
161  {
162 
163  }

◆ onRealmRemoved()

void org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.onRealmRemoved ( RealmModel  realm)
inline

org.keycloak.sessions.AuthenticationSessionProviderを実装しています。

131  {
132  // Send message to all DCs. The remoteCache will notify client listeners on all DCs for remove authentication sessions
134  RealmRemovedSessionEvent.createEvent(RealmRemovedSessionEvent.class, InfinispanAuthenticationSessionProviderFactory.REALM_REMOVED_AUTHSESSION_EVENT, session, realm.getId(), false),
135  ClusterProvider.DCNotify.ALL_DCS);
136  }
final SessionEventsSenderTransaction clusterEventsSenderTx
Definition: InfinispanAuthenticationSessionProvider.java:54
final KeycloakSession session
Definition: InfinispanAuthenticationSessionProvider.java:50
void addEvent(SessionClusterEvent event, ClusterProvider.DCNotify dcNotify)
Definition: SessionEventsSenderTransaction.java:42

◆ onRealmRemovedEvent()

void org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.onRealmRemovedEvent ( String  realmId)
inlineprotected
138  {
139  Iterator<Map.Entry<String, RootAuthenticationSessionEntity>> itr = CacheDecorators.localCache(cache)
140  .entrySet()
141  .stream()
142  .filter(RootAuthenticationSessionPredicate.create(realmId))
143  .iterator();
144 
145  while (itr.hasNext()) {
146  CacheDecorators.localCache(cache)
147  .remove(itr.next().getKey());
148  }
149  }
final Cache< String, RootAuthenticationSessionEntity > cache
Definition: InfinispanAuthenticationSessionProvider.java:51

◆ removeExpired()

void org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.removeExpired ( RealmModel  realm)
inline

org.keycloak.sessions.AuthenticationSessionProviderを実装しています。

106  {
107  log.debugf("Removing expired sessions");
108 
109  int expired = Time.currentTime() - RealmInfoUtil.getDettachedClientSessionLifespan(realm);
110 
111 
112  // Each cluster node cleanups just local sessions, which are those owned by himself (+ few more taking l1 cache into account)
113  Iterator<Map.Entry<String, RootAuthenticationSessionEntity>> itr = CacheDecorators.localCache(cache)
114  .entrySet()
115  .stream()
116  .filter(RootAuthenticationSessionPredicate.create(realm.getId()).expired(expired))
117  .iterator();
118 
119  int counter = 0;
120  while (itr.hasNext()) {
121  counter++;
122  RootAuthenticationSessionEntity entity = itr.next().getValue();
123  tx.remove(cache, entity.getId());
124  }
125 
126  log.debugf("Removed %d expired authentication sessions for realm '%s'", counter, realm.getName());
127  }
final InfinispanKeycloakTransaction tx
Definition: InfinispanAuthenticationSessionProvider.java:53
static final Logger log
Definition: InfinispanAuthenticationSessionProvider.java:48
final Cache< String, RootAuthenticationSessionEntity > cache
Definition: InfinispanAuthenticationSessionProvider.java:51
public< K, V > void remove(Cache< K, V > cache, K key)
Definition: InfinispanKeycloakTransaction.java:182

◆ removeRootAuthenticationSession()

void org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.removeRootAuthenticationSession ( RealmModel  realm,
RootAuthenticationSessionModel  authenticationSession 
)
inline

org.keycloak.sessions.AuthenticationSessionProviderを実装しています。

190  {
191  tx.remove(cache, authenticationSession.getId());
192  }
final InfinispanKeycloakTransaction tx
Definition: InfinispanAuthenticationSessionProvider.java:53
final Cache< String, RootAuthenticationSessionEntity > cache
Definition: InfinispanAuthenticationSessionProvider.java:51
public< K, V > void remove(Cache< K, V > cache, K key)
Definition: InfinispanKeycloakTransaction.java:182

◆ updateNonlocalSessionAuthNotes()

void org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.updateNonlocalSessionAuthNotes ( AuthenticationSessionCompoundId  compoundId,
Map< String, String >  authNotesFragment 
)
inline

org.keycloak.sessions.AuthenticationSessionProviderを実装しています。

167  {
168  if (compoundId == null) {
169  return;
170  }
171 
172  ClusterProvider cluster = session.getProvider(ClusterProvider.class);
173  cluster.notify(
174  InfinispanAuthenticationSessionProviderFactory.AUTHENTICATION_SESSION_EVENTS,
175  AuthenticationSessionAuthNoteUpdateEvent.create(compoundId.getRootSessionId(), compoundId.getTabId(), compoundId.getClientUUID(), authNotesFragment),
176  true,
177  ClusterProvider.DCNotify.ALL_BUT_LOCAL_DC
178  );
179  }
final KeycloakSession session
Definition: InfinispanAuthenticationSessionProvider.java:50
< T extends Provider > T getProvider(Class< T > clazz)

◆ wrap()

RootAuthenticationSessionAdapter org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.wrap ( RealmModel  realm,
RootAuthenticationSessionEntity  entity 
)
inlineprivate
88  {
89  return entity==null ? null : new RootAuthenticationSessionAdapter(session, this, cache, realm, entity);
90  }
final KeycloakSession session
Definition: InfinispanAuthenticationSessionProvider.java:50
final Cache< String, RootAuthenticationSessionEntity > cache
Definition: InfinispanAuthenticationSessionProvider.java:51

メンバ詳解

◆ cache

final Cache<String, RootAuthenticationSessionEntity> org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.cache
private

◆ clusterEventsSenderTx

final SessionEventsSenderTransaction org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.clusterEventsSenderTx
protected

◆ keyGenerator

final InfinispanKeyGenerator org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.keyGenerator
private

◆ log

final Logger org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.log = Logger.getLogger(InfinispanAuthenticationSessionProvider.class)
staticprivate

◆ session

final KeycloakSession org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.session
private

◆ tx

final InfinispanKeycloakTransaction org.keycloak.models.sessions.infinispan.InfinispanAuthenticationSessionProvider.tx
protected

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