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

公開メンバ関数

 UserCacheSession (UserCacheManager cache, KeycloakSession session)
 
void clear ()
 
UserProvider getDelegate ()
 
void registerUserInvalidation (RealmModel realm, CachedUser user)
 
void evict (RealmModel realm, UserModel user)
 
void evict (RealmModel realm)
 
UserModel getUserById (String id, RealmModel realm)
 
UserModel getUserByUsername (String username, RealmModel realm)
 
UserModel getUserByEmail (String email, RealmModel realm)
 
void close ()
 
UserModel getUserByFederatedIdentity (FederatedIdentityModel socialLink, RealmModel realm)
 
List< UserModelgetGroupMembers (RealmModel realm, GroupModel group, int firstResult, int maxResults)
 
List< UserModelgetGroupMembers (RealmModel realm, GroupModel group)
 
List< UserModelgetRoleMembers (RealmModel realm, RoleModel role, int firstResult, int maxResults)
 
List< UserModelgetRoleMembers (RealmModel realm, RoleModel role)
 
UserModel getServiceAccount (ClientModel client)
 
UserModel findServiceAccount (ClientModel client)
 
List< UserModelgetUsers (RealmModel realm, boolean includeServiceAccounts)
 
int getUsersCount (RealmModel realm, boolean includeServiceAccount)
 
int getUsersCount (RealmModel realm)
 
List< UserModelgetUsers (RealmModel realm, int firstResult, int maxResults, boolean includeServiceAccounts)
 
List< UserModelgetUsers (RealmModel realm)
 
List< UserModelgetUsers (RealmModel realm, int firstResult, int maxResults)
 
List< UserModelsearchForUser (String search, RealmModel realm)
 
List< UserModelsearchForUser (String search, RealmModel realm, int firstResult, int maxResults)
 
List< UserModelsearchForUser (Map< String, String > attributes, RealmModel realm)
 
List< UserModelsearchForUser (Map< String, String > attributes, RealmModel realm, int firstResult, int maxResults)
 
List< UserModelsearchForUserByUserAttribute (String attrName, String attrValue, RealmModel realm)
 
Set< FederatedIdentityModelgetFederatedIdentities (UserModel user, RealmModel realm)
 
FederatedIdentityModel getFederatedIdentity (UserModel user, String socialProvider, RealmModel realm)
 
void updateConsent (RealmModel realm, String userId, UserConsentModel consent)
 
boolean revokeConsentForClient (RealmModel realm, String userId, String clientInternalId)
 
void addConsent (RealmModel realm, String userId, UserConsentModel consent)
 
UserConsentModel getConsentByClient (RealmModel realm, String userId, String clientId)
 
List< UserConsentModelgetConsents (RealmModel realm, String userId)
 
void setNotBeforeForUser (RealmModel realm, UserModel user, int notBefore)
 
int getNotBeforeOfUser (RealmModel realm, UserModel user)
 
UserModel addUser (RealmModel realm, String id, String username, boolean addDefaultRoles, boolean addDefaultRequiredActions)
 
UserModel addUser (RealmModel realm, String username)
 
boolean removeUser (RealmModel realm, UserModel user)
 
void addFederatedIdentity (RealmModel realm, UserModel user, FederatedIdentityModel socialLink)
 
void updateFederatedIdentity (RealmModel realm, UserModel federatedUser, FederatedIdentityModel federatedIdentityModel)
 
boolean removeFederatedIdentity (RealmModel realm, UserModel user, String socialProvider)
 
void grantToAllUsers (RealmModel realm, RoleModel role)
 
void preRemove (RealmModel realm)
 
void preRemove (RealmModel realm, RoleModel role)
 
void preRemove (RealmModel realm, GroupModel group)
 
void preRemove (RealmModel realm, ClientModel client)
 
void preRemove (ProtocolMapperModel protocolMapper)
 
void preRemove (ClientScopeModel clientScope)
 
void preRemove (RealmModel realm, ComponentModel component)
 
void removeImportedUsers (RealmModel realm, String storageProviderId)
 
void unlinkUsers (RealmModel realm, String storageProviderId)
 

限定公開メンバ関数

void runInvalidations ()
 
UserModel getUserAdapter (RealmModel realm, String userId, Long loaded, UserModel delegate)
 
UserModel validateCache (RealmModel realm, CachedUser cached)
 
UserModel cacheUser (RealmModel realm, UserModel delegate, Long revision)
 
void fullyInvalidateUser (RealmModel realm, UserModel user)
 

限定公開変数類

UserCacheManager cache
 
KeycloakSession session
 
UserProvider delegate
 
boolean transactionActive
 
boolean setRollbackOnly
 
final long startupRevision
 
Set< String > invalidations = new HashSet<>()
 
Set< String > realmInvalidations = new HashSet<>()
 
Set< InvalidationEventinvalidationEvents = new HashSet<>()
 
Map< String, UserModelmanagedUsers = new HashMap<>()
 

静的限定公開変数類

static final Logger logger = Logger.getLogger(UserCacheSession.class)
 

静的関数

static String getUserByUsernameCacheKey (String realmId, String username)
 
static String getUserByEmailCacheKey (String realmId, String email)
 
static String getUserByFederatedIdentityCacheKey (String realmId, String identityProvider, String socialUserId)
 
static String getFederatedIdentityLinksCacheKey (String userId)
 
static String getConsentCacheKey (String userId)
 

非公開メンバ関数

KeycloakTransaction getTransaction ()
 
boolean isRegisteredForInvalidation (RealmModel realm, String userId)
 
void onCache (RealmModel realm, UserAdapter adapter, UserModel delegate)
 
void invalidateConsent (String userId)
 
UserConsentModel toConsentModel (RealmModel realm, CachedUserConsent cachedConsent)
 
void invalidateFederationLink (String userId)
 
void addRealmInvalidation (String realmId)
 

静的非公開メンバ関数

static String getUserByFederatedIdentityCacheKey (String realmId, FederatedIdentityModel socialLink)
 

詳解

著者
Bill Burke
バージョン
Revision
1

構築子と解体子

◆ UserCacheSession()

org.keycloak.models.cache.infinispan.UserCacheSession.UserCacheSession ( UserCacheManager  cache,
KeycloakSession  session 
)
inline
88  {
89  this.cache = cache;
90  this.session = session;
93  }
long getCurrentCounter()
Definition: CacheManager.java:73
final long startupRevision
Definition: UserCacheSession.java:80
KeycloakTransactionManager getTransactionManager()
KeycloakSession session
Definition: UserCacheSession.java:76
UserCacheManager cache
Definition: UserCacheSession.java:75
KeycloakTransaction getTransaction()
Definition: UserCacheSession.java:143
void enlistAfterCompletion(KeycloakTransaction transaction)

関数詳解

◆ addConsent()

void org.keycloak.models.cache.infinispan.UserCacheSession.addConsent ( RealmModel  realm,
String  userId,
UserConsentModel  consent 
)
inline

org.keycloak.models.UserProviderを実装しています。

649  {
650  invalidateConsent(userId);
651  getDelegate().addConsent(realm, userId, consent);
652  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void invalidateConsent(String userId)
Definition: UserCacheSession.java:654
void addConsent(RealmModel realm, String userId, UserConsentModel consent)

◆ addFederatedIdentity()

void org.keycloak.models.cache.infinispan.UserCacheSession.addFederatedIdentity ( RealmModel  realm,
UserModel  user,
FederatedIdentityModel  socialLink 
)
inline

org.keycloak.models.UserProviderを実装しています。

792  {
793  invalidateFederationLink(user.getId());
794  getDelegate().addFederatedIdentity(realm, user, socialLink);
795  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void addFederatedIdentity(RealmModel realm, UserModel user, FederatedIdentityModel socialLink)
void invalidateFederationLink(String userId)
Definition: UserCacheSession.java:803

◆ addRealmInvalidation()

void org.keycloak.models.cache.infinispan.UserCacheSession.addRealmInvalidation ( String  realmId)
inlineprivate
884  {
885  realmInvalidations.add(realmId);
886  invalidationEvents.add(UserCacheRealmInvalidationEvent.create(realmId));
887  }
Set< InvalidationEvent > invalidationEvents
Definition: UserCacheSession.java:85
Set< String > realmInvalidations
Definition: UserCacheSession.java:84

◆ addUser() [1/2]

UserModel org.keycloak.models.cache.infinispan.UserCacheSession.addUser ( RealmModel  realm,
String  id,
String  username,
boolean  addDefaultRoles,
boolean  addDefaultRequiredActions 
)
inline

org.keycloak.models.UserProviderを実装しています。

758  {
759  UserModel user = getDelegate().addUser(realm, id, username, addDefaultRoles, addDefaultRoles);
760  // just in case the transaction is rolled back you need to invalidate the user and all cache queries for that user
761  fullyInvalidateUser(realm, user);
762  managedUsers.put(user.getId(), user);
763  return user;
764  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
Map< String, UserModel > managedUsers
Definition: UserCacheSession.java:86
void fullyInvalidateUser(RealmModel realm, UserModel user)
Definition: UserCacheSession.java:776
UserModel addUser(RealmModel realm, String id, String username, boolean addDefaultRoles, boolean addDefaultRequiredActions)

◆ addUser() [2/2]

UserModel org.keycloak.models.cache.infinispan.UserCacheSession.addUser ( RealmModel  realm,
String  username 
)
inline

org.keycloak.storage.user.UserRegistrationProviderを実装しています。

767  {
768  UserModel user = getDelegate().addUser(realm, username);
769  // just in case the transaction is rolled back you need to invalidate the user and all cache queries for that user
770  fullyInvalidateUser(realm, user);
771  managedUsers.put(user.getId(), user);
772  return user;
773  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
Map< String, UserModel > managedUsers
Definition: UserCacheSession.java:86
void fullyInvalidateUser(RealmModel realm, UserModel user)
Definition: UserCacheSession.java:776
UserModel addUser(RealmModel realm, String id, String username, boolean addDefaultRoles, boolean addDefaultRequiredActions)

◆ cacheUser()

UserModel org.keycloak.models.cache.infinispan.UserCacheSession.cacheUser ( RealmModel  realm,
UserModel  delegate,
Long  revision 
)
inlineprotected
315  {
316  int notBefore = getDelegate().getNotBeforeOfUser(realm, delegate);
317 
318  StorageId storageId = delegate.getFederationLink() != null ?
319  new StorageId(delegate.getFederationLink(), delegate.getId()) : new StorageId(delegate.getId());
320  CachedUser cached = null;
321  UserAdapter adapter = null;
322 
323  if (!storageId.isLocal()) {
324  ComponentModel component = realm.getComponent(storageId.getProviderId());
325  UserStorageProviderModel model = new UserStorageProviderModel(component);
326  if (!model.isEnabled()) {
327  return new ReadOnlyUserModelDelegate(delegate) {
328  @Override
329  public boolean isEnabled() {
330  return false;
331  }
332  };
333  }
334  UserStorageProviderModel.CachePolicy policy = model.getCachePolicy();
335  if (policy != null && policy == UserStorageProviderModel.CachePolicy.NO_CACHE) {
336  return delegate;
337  }
338 
339  cached = new CachedUser(revision, realm, delegate, notBefore);
340  adapter = new UserAdapter(cached, this, session, realm);
341  onCache(realm, adapter, delegate);
342 
343  long lifespan = model.getLifespan();
344  if (lifespan > 0) {
345  cache.addRevisioned(cached, startupRevision, lifespan);
346  } else {
348  }
349  } else {
350  cached = new CachedUser(revision, realm, delegate, notBefore);
351  adapter = new UserAdapter(cached, this, session, realm);
352  onCache(realm, adapter, delegate);
354  }
355 
356  return adapter;
357  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
final long startupRevision
Definition: UserCacheSession.java:80
KeycloakSession session
Definition: UserCacheSession.java:76
int getNotBeforeOfUser(RealmModel realm, UserModel user)
UserProvider delegate
Definition: UserCacheSession.java:77
UserCacheManager cache
Definition: UserCacheSession.java:75
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132
void onCache(RealmModel realm, UserAdapter adapter, UserModel delegate)
Definition: UserCacheSession.java:359

◆ clear()

void org.keycloak.models.cache.infinispan.UserCacheSession.clear ( )
inline

org.keycloak.models.cache.UserCacheを実装しています。

96  {
97  cache.clear();
98  ClusterProvider cluster = session.getProvider(ClusterProvider.class);
99  cluster.notify(InfinispanUserCacheProviderFactory.USER_CLEAR_CACHE_EVENTS, new ClearCacheEvent(), true, ClusterProvider.DCNotify.ALL_DCS);
100  }
KeycloakSession session
Definition: UserCacheSession.java:76
< T extends Provider > T getProvider(Class< T > clazz)
void clear()
Definition: UserCacheManager.java:49
UserCacheManager cache
Definition: UserCacheSession.java:75

◆ close()

void org.keycloak.models.cache.infinispan.UserCacheSession.close ( )
inline

org.keycloak.models.UserProviderを実装しています。

404  {
405  if (delegate != null) delegate.close();
406  }
UserProvider delegate
Definition: UserCacheSession.java:77

◆ evict() [1/2]

void org.keycloak.models.cache.infinispan.UserCacheSession.evict ( RealmModel  realm,
UserModel  user 
)
inline

org.keycloak.models.cache.UserCacheを実装しています。

116  {
117  if (!transactionActive) throw new IllegalStateException("Cannot call evict() without a transaction");
118  getDelegate(); // invalidations need delegate set
119  if (user instanceof CachedUserModel) {
120  ((CachedUserModel)user).invalidate();
121  } else {
122  cache.userUpdatedInvalidations(user.getId(), user.getUsername(), user.getEmail(), realm.getId(), invalidations);
123  invalidationEvents.add(UserUpdatedEvent.create(user.getId(), user.getUsername(), user.getEmail(), realm.getId()));
124  }
125  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void userUpdatedInvalidations(String userId, String username, String email, String realmId, Set< String > invalidations)
Definition: UserCacheManager.java:55
Set< InvalidationEvent > invalidationEvents
Definition: UserCacheSession.java:85
Set< String > invalidations
Definition: UserCacheSession.java:83
boolean transactionActive
Definition: UserCacheSession.java:78
UserCacheManager cache
Definition: UserCacheSession.java:75

◆ evict() [2/2]

void org.keycloak.models.cache.infinispan.UserCacheSession.evict ( RealmModel  realm)
inline

org.keycloak.models.cache.UserCacheを実装しています。

128  {
129  addRealmInvalidation(realm.getId());
130  }
void addRealmInvalidation(String realmId)
Definition: UserCacheSession.java:884

◆ findServiceAccount()

UserModel org.keycloak.models.cache.infinispan.UserCacheSession.findServiceAccount ( ClientModel  client)
inline
482  {
483  String username = ServiceAccountConstants.SERVICE_ACCOUNT_USER_PREFIX + client.getClientId();
484  logger.tracev("getServiceAccount: {0}", username);
485  username = username.toLowerCase();
486  RealmModel realm = client.getRealm();
487  if (realmInvalidations.contains(realm.getId())) {
488  logger.tracev("realmInvalidations");
489  return getDelegate().getServiceAccount(client);
490  }
491  String cacheKey = getUserByUsernameCacheKey(realm.getId(), username);
492  if (invalidations.contains(cacheKey)) {
493  logger.tracev("invalidations");
494  return getDelegate().getServiceAccount(client);
495  }
496  UserListQuery query = cache.get(cacheKey, UserListQuery.class);
497 
498  String userId = null;
499  if (query == null) {
500  logger.tracev("query null");
501  Long loaded = cache.getCurrentRevision(cacheKey);
502  UserModel model = getDelegate().getServiceAccount(client);
503  if (model == null) {
504  logger.tracev("model from delegate null");
505  return null;
506  }
507  userId = model.getId();
508  if (invalidations.contains(userId)) return model;
509  if (managedUsers.containsKey(userId)) {
510  logger.tracev("return managed user");
511  return managedUsers.get(userId);
512  }
513 
514  UserModel adapter = getUserAdapter(realm, userId, loaded, model);
515  if (adapter instanceof UserAdapter) { // this was cached, so we can cache query too
516  query = new UserListQuery(loaded, cacheKey, realm, model.getId());
518  }
519  managedUsers.put(userId, adapter);
520  return adapter;
521  } else {
522  userId = query.getUsers().iterator().next();
523  if (invalidations.contains(userId)) {
524  logger.tracev("invalidated cache return delegate");
525  return getDelegate().getUserByUsername(username, realm);
526 
527  }
528  logger.trace("return getUserById");
529  return getUserById(userId, realm);
530  }
531  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
Map< String, UserModel > managedUsers
Definition: UserCacheSession.java:86
final long startupRevision
Definition: UserCacheSession.java:80
Set< String > invalidations
Definition: UserCacheSession.java:83
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
static final Logger logger
Definition: UserCacheSession.java:74
static String getUserByUsernameCacheKey(String realmId, String username)
Definition: UserCacheSession.java:214
UserModel getServiceAccount(ClientModel client)
UserModel getUserAdapter(RealmModel realm, String userId, Long loaded, UserModel delegate)
Definition: UserCacheSession.java:284
UserCacheManager cache
Definition: UserCacheSession.java:75
UserModel getUserById(String id, RealmModel realm)
Definition: UserCacheSession.java:185
UserModel getUserByUsername(String username, RealmModel realm)
Set< String > realmInvalidations
Definition: UserCacheSession.java:84
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ fullyInvalidateUser()

void org.keycloak.models.cache.infinispan.UserCacheSession.fullyInvalidateUser ( RealmModel  realm,
UserModel  user 
)
inlineprotected
776  {
777  Set<FederatedIdentityModel> federatedIdentities = realm.isIdentityFederationEnabled() ? getFederatedIdentities(user, realm) : null;
778 
779  UserFullInvalidationEvent event = UserFullInvalidationEvent.create(user.getId(), user.getUsername(), user.getEmail(), realm.getId(), realm.isIdentityFederationEnabled(), federatedIdentities);
780 
781  cache.fullUserInvalidation(user.getId(), user.getUsername(), user.getEmail(), realm.getId(), realm.isIdentityFederationEnabled(), event.getFederatedIdentities(), invalidations);
782  invalidationEvents.add(event);
783  }
Set< InvalidationEvent > invalidationEvents
Definition: UserCacheSession.java:85
Set< String > invalidations
Definition: UserCacheSession.java:83
Set< FederatedIdentityModel > getFederatedIdentities(UserModel user, RealmModel realm)
Definition: UserCacheSession.java:592
UserCacheManager cache
Definition: UserCacheSession.java:75
void fullUserInvalidation(String userId, String username, String email, String realmId, boolean identityFederationEnabled, Map< String, String > federatedIdentities, Set< String > invalidations)
Definition: UserCacheManager.java:62

◆ getConsentByClient()

UserConsentModel org.keycloak.models.cache.infinispan.UserCacheSession.getConsentByClient ( RealmModel  realm,
String  userId,
String  clientId 
)
inline

org.keycloak.models.UserProviderを実装しています。

660  {
661  logger.tracev("getConsentByClient: {0}", userId);
662 
663  String cacheKey = getConsentCacheKey(userId);
664  if (realmInvalidations.contains(realm.getId()) || invalidations.contains(userId) || invalidations.contains(cacheKey)) {
665  return getDelegate().getConsentByClient(realm, userId, clientId);
666  }
667 
668  CachedUserConsents cached = cache.get(cacheKey, CachedUserConsents.class);
669 
670  if (cached == null) {
671  Long loaded = cache.getCurrentRevision(cacheKey);
672  List<UserConsentModel> consents = getDelegate().getConsents(realm, userId);
673  cached = new CachedUserConsents(loaded, cacheKey, realm, consents);
675  }
676  CachedUserConsent cachedConsent = cached.getConsents().get(clientId);
677  if (cachedConsent == null) return null;
678  return toConsentModel(realm, cachedConsent);
679  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
final long startupRevision
Definition: UserCacheSession.java:80
List< UserConsentModel > getConsents(RealmModel realm, String userId)
Set< String > invalidations
Definition: UserCacheSession.java:83
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
UserConsentModel toConsentModel(RealmModel realm, CachedUserConsent cachedConsent)
Definition: UserCacheSession.java:710
static final Logger logger
Definition: UserCacheSession.java:74
static String getConsentCacheKey(String userId)
Definition: UserCacheSession.java:643
UserCacheManager cache
Definition: UserCacheSession.java:75
UserConsentModel getConsentByClient(RealmModel realm, String userId, String clientInternalId)
Set< String > realmInvalidations
Definition: UserCacheSession.java:84
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getConsentCacheKey()

static String org.keycloak.models.cache.infinispan.UserCacheSession.getConsentCacheKey ( String  userId)
inlinestaticpackage
643  {
644  return userId + ".consents";
645  }

◆ getConsents()

List<UserConsentModel> org.keycloak.models.cache.infinispan.UserCacheSession.getConsents ( RealmModel  realm,
String  userId 
)
inline

org.keycloak.models.UserProviderを実装しています。

682  {
683  logger.tracev("getConsents: {0}", userId);
684 
685  String cacheKey = getConsentCacheKey(userId);
686  if (realmInvalidations.contains(realm.getId()) || invalidations.contains(userId) || invalidations.contains(cacheKey)) {
687  return getDelegate().getConsents(realm, userId);
688  }
689 
690  CachedUserConsents cached = cache.get(cacheKey, CachedUserConsents.class);
691 
692  if (cached == null) {
693  Long loaded = cache.getCurrentRevision(cacheKey);
694  List<UserConsentModel> consents = getDelegate().getConsents(realm, userId);
695  cached = new CachedUserConsents(loaded, cacheKey, realm, consents);
697  return consents;
698  } else {
699  List<UserConsentModel> result = new LinkedList<>();
700  for (CachedUserConsent cachedConsent : cached.getConsents().values()) {
701  UserConsentModel consent = toConsentModel(realm, cachedConsent);
702  if (consent != null) {
703  result.add(consent);
704  }
705  }
706  return result;
707  }
708  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
final long startupRevision
Definition: UserCacheSession.java:80
List< UserConsentModel > getConsents(RealmModel realm, String userId)
Set< String > invalidations
Definition: UserCacheSession.java:83
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
UserConsentModel toConsentModel(RealmModel realm, CachedUserConsent cachedConsent)
Definition: UserCacheSession.java:710
static final Logger logger
Definition: UserCacheSession.java:74
static String getConsentCacheKey(String userId)
Definition: UserCacheSession.java:643
UserCacheManager cache
Definition: UserCacheSession.java:75
Set< String > realmInvalidations
Definition: UserCacheSession.java:84
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getDelegate()

UserProvider org.keycloak.models.cache.infinispan.UserCacheSession.getDelegate ( )
inline
102  {
103  if (!transactionActive) throw new IllegalStateException("Cannot access delegate without a transaction");
104  if (delegate != null) return delegate;
106 
107  return delegate;
108  }
KeycloakSession session
Definition: UserCacheSession.java:76
UserProvider delegate
Definition: UserCacheSession.java:77
boolean transactionActive
Definition: UserCacheSession.java:78

◆ getFederatedIdentities()

Set<FederatedIdentityModel> org.keycloak.models.cache.infinispan.UserCacheSession.getFederatedIdentities ( UserModel  user,
RealmModel  realm 
)
inline

org.keycloak.models.UserProviderを実装しています。

592  {
593  logger.tracev("getFederatedIdentities: {0}", user.getUsername());
594 
595  String cacheKey = getFederatedIdentityLinksCacheKey(user.getId());
596  if (realmInvalidations.contains(realm.getId()) || invalidations.contains(user.getId()) || invalidations.contains(cacheKey)) {
597  return getDelegate().getFederatedIdentities(user, realm);
598  }
599 
600  CachedFederatedIdentityLinks cachedLinks = cache.get(cacheKey, CachedFederatedIdentityLinks.class);
601 
602  if (cachedLinks == null) {
603  Long loaded = cache.getCurrentRevision(cacheKey);
604  Set<FederatedIdentityModel> federatedIdentities = getDelegate().getFederatedIdentities(user, realm);
605  cachedLinks = new CachedFederatedIdentityLinks(loaded, cacheKey, realm, federatedIdentities);
606  cache.addRevisioned(cachedLinks, startupRevision);
607  return federatedIdentities;
608  } else {
609  return new HashSet<>(cachedLinks.getFederatedIdentities());
610  }
611  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
Set< FederatedIdentityModel > getFederatedIdentities(UserModel user, RealmModel realm)
final long startupRevision
Definition: UserCacheSession.java:80
Set< String > invalidations
Definition: UserCacheSession.java:83
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
static final Logger logger
Definition: UserCacheSession.java:74
UserCacheManager cache
Definition: UserCacheSession.java:75
static String getFederatedIdentityLinksCacheKey(String userId)
Definition: UserCacheSession.java:230
Set< String > realmInvalidations
Definition: UserCacheSession.java:84
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getFederatedIdentity()

FederatedIdentityModel org.keycloak.models.cache.infinispan.UserCacheSession.getFederatedIdentity ( UserModel  user,
String  socialProvider,
RealmModel  realm 
)
inline

org.keycloak.models.UserProviderを実装しています。

614  {
615  logger.tracev("getFederatedIdentity: {0} {1}", user.getUsername(), socialProvider);
616 
617  String cacheKey = getFederatedIdentityLinksCacheKey(user.getId());
618  if (realmInvalidations.contains(realm.getId()) || invalidations.contains(user.getId()) || invalidations.contains(cacheKey)) {
619  return getDelegate().getFederatedIdentity(user, socialProvider, realm);
620  }
621 
622  Set<FederatedIdentityModel> federatedIdentities = getFederatedIdentities(user, realm);
623  for (FederatedIdentityModel socialLink : federatedIdentities) {
624  if (socialLink.getIdentityProvider().equals(socialProvider)) {
625  return socialLink;
626  }
627  }
628  return null;
629  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
FederatedIdentityModel getFederatedIdentity(UserModel user, String socialProvider, RealmModel realm)
Set< String > invalidations
Definition: UserCacheSession.java:83
static final Logger logger
Definition: UserCacheSession.java:74
Set< FederatedIdentityModel > getFederatedIdentities(UserModel user, RealmModel realm)
Definition: UserCacheSession.java:592
static String getFederatedIdentityLinksCacheKey(String userId)
Definition: UserCacheSession.java:230
Set< String > realmInvalidations
Definition: UserCacheSession.java:84

◆ getFederatedIdentityLinksCacheKey()

static String org.keycloak.models.cache.infinispan.UserCacheSession.getFederatedIdentityLinksCacheKey ( String  userId)
inlinestaticpackage
230  {
231  return userId + ".idplinks";
232  }

◆ getGroupMembers() [1/2]

List<UserModel> org.keycloak.models.cache.infinispan.UserCacheSession.getGroupMembers ( RealmModel  realm,
GroupModel  group,
int  firstResult,
int  maxResults 
)
inline

org.keycloak.storage.user.UserQueryProviderを実装しています。

451  {
452  return getDelegate().getGroupMembers(realm, group, firstResult, maxResults);
453  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
List< UserModel > getGroupMembers(RealmModel realm, GroupModel group, int firstResult, int maxResults)

◆ getGroupMembers() [2/2]

List<UserModel> org.keycloak.models.cache.infinispan.UserCacheSession.getGroupMembers ( RealmModel  realm,
GroupModel  group 
)
inline

org.keycloak.storage.user.UserQueryProviderを実装しています。

456  {
457  return getDelegate().getGroupMembers(realm, group);
458  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
List< UserModel > getGroupMembers(RealmModel realm, GroupModel group, int firstResult, int maxResults)

◆ getNotBeforeOfUser()

int org.keycloak.models.cache.infinispan.UserCacheSession.getNotBeforeOfUser ( RealmModel  realm,
UserModel  user 
)
inline

org.keycloak.models.UserProviderを実装しています。

744  {
745  if (isRegisteredForInvalidation(realm, user.getId())) {
746  return getDelegate().getNotBeforeOfUser(realm, user);
747  }
748 
749  UserModel foundUser = getUserById(user.getId(), realm);
750  if (foundUser instanceof UserAdapter) {
751  return ((UserAdapter) foundUser).cached.getNotBefore();
752  } else {
753  return getDelegate().getNotBeforeOfUser(realm, user);
754  }
755  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
int getNotBeforeOfUser(RealmModel realm, UserModel user)
boolean isRegisteredForInvalidation(RealmModel realm, String userId)
Definition: UserCacheSession.java:180
UserModel getUserById(String id, RealmModel realm)
Definition: UserCacheSession.java:185

◆ getRoleMembers() [1/2]

List<UserModel> org.keycloak.models.cache.infinispan.UserCacheSession.getRoleMembers ( RealmModel  realm,
RoleModel  role,
int  firstResult,
int  maxResults 
)
inline

org.keycloak.storage.user.UserQueryProviderを実装しています。

461  {
462  return getDelegate().getRoleMembers(realm, role, firstResult, maxResults);
463  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
default List< UserModel > getRoleMembers(RealmModel realm, RoleModel role)
Definition: UserQueryProvider.java:148

◆ getRoleMembers() [2/2]

List<UserModel> org.keycloak.models.cache.infinispan.UserCacheSession.getRoleMembers ( RealmModel  realm,
RoleModel  role 
)
inline

org.keycloak.storage.user.UserQueryProviderを実装しています。

466  {
467  return getDelegate().getRoleMembers(realm, role);
468  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
default List< UserModel > getRoleMembers(RealmModel realm, RoleModel role)
Definition: UserQueryProvider.java:148

◆ getServiceAccount()

UserModel org.keycloak.models.cache.infinispan.UserCacheSession.getServiceAccount ( ClientModel  client)
inline

org.keycloak.models.UserProviderを実装しています。

472  {
473  // Just an attempt to find the user from cache by default serviceAccount username
474  UserModel user = findServiceAccount(client);
475  if (user != null && user.getServiceAccountClientLink() != null && user.getServiceAccountClientLink().equals(client.getId())) {
476  return user;
477  }
478 
479  return getDelegate().getServiceAccount(client);
480  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
UserModel findServiceAccount(ClientModel client)
Definition: UserCacheSession.java:482
UserModel getServiceAccount(ClientModel client)

◆ getTransaction()

KeycloakTransaction org.keycloak.models.cache.infinispan.UserCacheSession.getTransaction ( )
inlineprivate
143  {
144  return new KeycloakTransaction() {
145  @Override
146  public void begin() {
147  transactionActive = true;
148  }
149 
150  @Override
151  public void commit() {
153  transactionActive = false;
154  }
155 
156  @Override
157  public void rollback() {
158  setRollbackOnly = true;
160  transactionActive = false;
161  }
162 
163  @Override
164  public void setRollbackOnly() {
165  setRollbackOnly = true;
166  }
167 
168  @Override
169  public boolean getRollbackOnly() {
170  return setRollbackOnly;
171  }
172 
173  @Override
174  public boolean isActive() {
175  return transactionActive;
176  }
177  };
178  }
void runInvalidations()
Definition: UserCacheSession.java:132
boolean setRollbackOnly
Definition: UserCacheSession.java:79
boolean transactionActive
Definition: UserCacheSession.java:78

◆ getUserAdapter()

UserModel org.keycloak.models.cache.infinispan.UserCacheSession.getUserAdapter ( RealmModel  realm,
String  userId,
Long  loaded,
UserModel  delegate 
)
inlineprotected
284  {
285  CachedUser cached = cache.get(userId, CachedUser.class);
286  if (cached == null) {
287  return cacheUser(realm, delegate, loaded);
288  } else {
289  return validateCache(realm, cached);
290  }
291  }
UserModel validateCache(RealmModel realm, CachedUser cached)
Definition: UserCacheSession.java:293
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
UserModel cacheUser(RealmModel realm, UserModel delegate, Long revision)
Definition: UserCacheSession.java:315
UserProvider delegate
Definition: UserCacheSession.java:77
UserCacheManager cache
Definition: UserCacheSession.java:75

◆ getUserByEmail()

UserModel org.keycloak.models.cache.infinispan.UserCacheSession.getUserByEmail ( String  email,
RealmModel  realm 
)
inline

org.keycloak.storage.user.UserLookupProviderを実装しています。

365  {
366  if (email == null) return null;
367  email = email.toLowerCase();
368  if (realmInvalidations.contains(realm.getId())) {
369  return getDelegate().getUserByEmail(email, realm);
370  }
371  String cacheKey = getUserByEmailCacheKey(realm.getId(), email);
372  if (invalidations.contains(cacheKey)) {
373  return getDelegate().getUserByEmail(email, realm);
374  }
375  UserListQuery query = cache.get(cacheKey, UserListQuery.class);
376 
377  String userId = null;
378  if (query == null) {
379  Long loaded = cache.getCurrentRevision(cacheKey);
380  UserModel model = getDelegate().getUserByEmail(email, realm);
381  if (model == null) return null;
382  userId = model.getId();
383  if (invalidations.contains(userId)) return model;
384  if (managedUsers.containsKey(userId)) return managedUsers.get(userId);
385 
386  UserModel adapter = getUserAdapter(realm, userId, loaded, model);
387  if (adapter instanceof UserAdapter) {
388  query = new UserListQuery(loaded, cacheKey, realm, model.getId());
390  }
391  managedUsers.put(userId, adapter);
392  return adapter;
393  } else {
394  userId = query.getUsers().iterator().next();
395  if (invalidations.contains(userId)) {
396  return getDelegate().getUserByEmail(email, realm);
397 
398  }
399  return getUserById(userId, realm);
400  }
401  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
Map< String, UserModel > managedUsers
Definition: UserCacheSession.java:86
final long startupRevision
Definition: UserCacheSession.java:80
Set< String > invalidations
Definition: UserCacheSession.java:83
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
static String getUserByEmailCacheKey(String realmId, String email)
Definition: UserCacheSession.java:218
UserModel getUserByEmail(String email, RealmModel realm)
UserModel getUserAdapter(RealmModel realm, String userId, Long loaded, UserModel delegate)
Definition: UserCacheSession.java:284
UserCacheManager cache
Definition: UserCacheSession.java:75
UserModel getUserById(String id, RealmModel realm)
Definition: UserCacheSession.java:185
Set< String > realmInvalidations
Definition: UserCacheSession.java:84
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getUserByEmailCacheKey()

static String org.keycloak.models.cache.infinispan.UserCacheSession.getUserByEmailCacheKey ( String  realmId,
String  email 
)
inlinestaticpackage
218  {
219  return realmId + ".email." + email;
220  }

◆ getUserByFederatedIdentity()

UserModel org.keycloak.models.cache.infinispan.UserCacheSession.getUserByFederatedIdentity ( FederatedIdentityModel  socialLink,
RealmModel  realm 
)
inline

org.keycloak.models.UserProviderを実装しています。

409  {
410  if (socialLink == null) return null;
411  if (!realm.isIdentityFederationEnabled()) return null;
412 
413  if (realmInvalidations.contains(realm.getId())) {
414  return getDelegate().getUserByFederatedIdentity(socialLink, realm);
415  }
416  String cacheKey = getUserByFederatedIdentityCacheKey(realm.getId(), socialLink);
417  if (invalidations.contains(cacheKey)) {
418  return getDelegate().getUserByFederatedIdentity(socialLink, realm);
419  }
420  UserListQuery query = cache.get(cacheKey, UserListQuery.class);
421 
422  String userId = null;
423  if (query == null) {
424  Long loaded = cache.getCurrentRevision(cacheKey);
425  UserModel model = getDelegate().getUserByFederatedIdentity(socialLink, realm);
426  if (model == null) return null;
427  userId = model.getId();
428  if (invalidations.contains(userId)) return model;
429  if (managedUsers.containsKey(userId)) return managedUsers.get(userId);
430 
431  UserModel adapter = getUserAdapter(realm, userId, loaded, model);
432  if (adapter instanceof UserAdapter) {
433  query = new UserListQuery(loaded, cacheKey, realm, model.getId());
435  }
436 
437  managedUsers.put(userId, adapter);
438  return adapter;
439  } else {
440  userId = query.getUsers().iterator().next();
441  if (invalidations.contains(userId)) {
442  invalidations.add(cacheKey);
443  return getDelegate().getUserByFederatedIdentity(socialLink, realm);
444 
445  }
446  return getUserById(userId, realm);
447  }
448  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
Map< String, UserModel > managedUsers
Definition: UserCacheSession.java:86
final long startupRevision
Definition: UserCacheSession.java:80
Set< String > invalidations
Definition: UserCacheSession.java:83
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
static String getUserByFederatedIdentityCacheKey(String realmId, FederatedIdentityModel socialLink)
Definition: UserCacheSession.java:222
UserModel getUserByFederatedIdentity(FederatedIdentityModel socialLink, RealmModel realm)
UserModel getUserAdapter(RealmModel realm, String userId, Long loaded, UserModel delegate)
Definition: UserCacheSession.java:284
UserCacheManager cache
Definition: UserCacheSession.java:75
UserModel getUserById(String id, RealmModel realm)
Definition: UserCacheSession.java:185
Set< String > realmInvalidations
Definition: UserCacheSession.java:84
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getUserByFederatedIdentityCacheKey() [1/2]

static String org.keycloak.models.cache.infinispan.UserCacheSession.getUserByFederatedIdentityCacheKey ( String  realmId,
FederatedIdentityModel  socialLink 
)
inlinestaticprivate
222  {
223  return getUserByFederatedIdentityCacheKey(realmId, socialLink.getIdentityProvider(), socialLink.getUserId());
224  }
static String getUserByFederatedIdentityCacheKey(String realmId, FederatedIdentityModel socialLink)
Definition: UserCacheSession.java:222

◆ getUserByFederatedIdentityCacheKey() [2/2]

static String org.keycloak.models.cache.infinispan.UserCacheSession.getUserByFederatedIdentityCacheKey ( String  realmId,
String  identityProvider,
String  socialUserId 
)
inlinestaticpackage
226  {
227  return realmId + ".idp." + identityProvider + "." + socialUserId;
228  }

◆ getUserById()

UserModel org.keycloak.models.cache.infinispan.UserCacheSession.getUserById ( String  id,
RealmModel  realm 
)
inline

org.keycloak.storage.user.UserLookupProviderを実装しています。

185  {
186  logger.tracev("getuserById {0}", id);
187  if (isRegisteredForInvalidation(realm, id)) {
188  logger.trace("registered for invalidation return delegate");
189  return getDelegate().getUserById(id, realm);
190  }
191  if (managedUsers.containsKey(id)) {
192  logger.trace("return managedusers");
193  return managedUsers.get(id);
194  }
195 
196  CachedUser cached = cache.get(id, CachedUser.class);
197  UserModel adapter = null;
198  if (cached == null) {
199  logger.trace("not cached");
200  Long loaded = cache.getCurrentRevision(id);
201  UserModel delegate = getDelegate().getUserById(id, realm);
202  if (delegate == null) {
203  logger.trace("delegate returning null");
204  return null;
205  }
206  adapter = cacheUser(realm, delegate, loaded);
207  } else {
208  adapter = validateCache(realm, cached);
209  }
210  managedUsers.put(id, adapter);
211  return adapter;
212  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
Map< String, UserModel > managedUsers
Definition: UserCacheSession.java:86
UserModel validateCache(RealmModel realm, CachedUser cached)
Definition: UserCacheSession.java:293
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
UserModel cacheUser(RealmModel realm, UserModel delegate, Long revision)
Definition: UserCacheSession.java:315
static final Logger logger
Definition: UserCacheSession.java:74
UserProvider delegate
Definition: UserCacheSession.java:77
boolean isRegisteredForInvalidation(RealmModel realm, String userId)
Definition: UserCacheSession.java:180
UserCacheManager cache
Definition: UserCacheSession.java:75
UserModel getUserById(String id, RealmModel realm)

◆ getUserByUsername()

UserModel org.keycloak.models.cache.infinispan.UserCacheSession.getUserByUsername ( String  username,
RealmModel  realm 
)
inline

org.keycloak.storage.user.UserLookupProviderを実装しています。

235  {
236  logger.tracev("getUserByUsername: {0}", username);
237  username = username.toLowerCase();
238  if (realmInvalidations.contains(realm.getId())) {
239  logger.tracev("realmInvalidations");
240  return getDelegate().getUserByUsername(username, realm);
241  }
242  String cacheKey = getUserByUsernameCacheKey(realm.getId(), username);
243  if (invalidations.contains(cacheKey)) {
244  logger.tracev("invalidations");
245  return getDelegate().getUserByUsername(username, realm);
246  }
247  UserListQuery query = cache.get(cacheKey, UserListQuery.class);
248 
249  String userId = null;
250  if (query == null) {
251  logger.tracev("query null");
252  Long loaded = cache.getCurrentRevision(cacheKey);
253  UserModel model = getDelegate().getUserByUsername(username, realm);
254  if (model == null) {
255  logger.tracev("model from delegate null");
256  return null;
257  }
258  userId = model.getId();
259  if (invalidations.contains(userId)) return model;
260  if (managedUsers.containsKey(userId)) {
261  logger.tracev("return managed user");
262  return managedUsers.get(userId);
263  }
264 
265  UserModel adapter = getUserAdapter(realm, userId, loaded, model);
266  if (adapter instanceof UserAdapter) { // this was cached, so we can cache query too
267  query = new UserListQuery(loaded, cacheKey, realm, model.getId());
269  }
270  managedUsers.put(userId, adapter);
271  return adapter;
272  } else {
273  userId = query.getUsers().iterator().next();
274  if (invalidations.contains(userId)) {
275  logger.tracev("invalidated cache return delegate");
276  return getDelegate().getUserByUsername(username, realm);
277 
278  }
279  logger.trace("return getUserById");
280  return getUserById(userId, realm);
281  }
282  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
Map< String, UserModel > managedUsers
Definition: UserCacheSession.java:86
final long startupRevision
Definition: UserCacheSession.java:80
Set< String > invalidations
Definition: UserCacheSession.java:83
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
static final Logger logger
Definition: UserCacheSession.java:74
static String getUserByUsernameCacheKey(String realmId, String username)
Definition: UserCacheSession.java:214
UserModel getUserAdapter(RealmModel realm, String userId, Long loaded, UserModel delegate)
Definition: UserCacheSession.java:284
UserCacheManager cache
Definition: UserCacheSession.java:75
UserModel getUserById(String id, RealmModel realm)
Definition: UserCacheSession.java:185
UserModel getUserByUsername(String username, RealmModel realm)
Set< String > realmInvalidations
Definition: UserCacheSession.java:84
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getUserByUsernameCacheKey()

static String org.keycloak.models.cache.infinispan.UserCacheSession.getUserByUsernameCacheKey ( String  realmId,
String  username 
)
inlinestaticpackage
214  {
215  return realmId + ".username." + username;
216  }

◆ getUsers() [1/4]

List<UserModel> org.keycloak.models.cache.infinispan.UserCacheSession.getUsers ( RealmModel  realm,
boolean  includeServiceAccounts 
)
inline

org.keycloak.models.UserProviderを実装しています。

537  {
538  return getDelegate().getUsers(realm, includeServiceAccounts);
539  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
List< UserModel > getUsers(RealmModel realm, boolean includeServiceAccounts)

◆ getUsers() [2/4]

List<UserModel> org.keycloak.models.cache.infinispan.UserCacheSession.getUsers ( RealmModel  realm,
int  firstResult,
int  maxResults,
boolean  includeServiceAccounts 
)
inline

org.keycloak.models.UserProviderを実装しています。

552  {
553  return getDelegate().getUsers(realm, firstResult, maxResults, includeServiceAccounts);
554  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
List< UserModel > getUsers(RealmModel realm, boolean includeServiceAccounts)

◆ getUsers() [3/4]

List<UserModel> org.keycloak.models.cache.infinispan.UserCacheSession.getUsers ( RealmModel  realm)
inline

org.keycloak.storage.user.UserQueryProviderを実装しています。

557  {
558  return getUsers(realm, false);
559  }
List< UserModel > getUsers(RealmModel realm, boolean includeServiceAccounts)
Definition: UserCacheSession.java:537

◆ getUsers() [4/4]

List<UserModel> org.keycloak.models.cache.infinispan.UserCacheSession.getUsers ( RealmModel  realm,
int  firstResult,
int  maxResults 
)
inline

org.keycloak.storage.user.UserQueryProviderを実装しています。

562  {
563  return getUsers(realm, firstResult, maxResults, false);
564  }
List< UserModel > getUsers(RealmModel realm, boolean includeServiceAccounts)
Definition: UserCacheSession.java:537

◆ getUsersCount() [1/2]

int org.keycloak.models.cache.infinispan.UserCacheSession.getUsersCount ( RealmModel  realm,
boolean  includeServiceAccount 
)
inline

org.keycloak.storage.user.UserQueryProviderを実装しています。

542  {
543  return getDelegate().getUsersCount(realm, includeServiceAccount);
544  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102

◆ getUsersCount() [2/2]

int org.keycloak.models.cache.infinispan.UserCacheSession.getUsersCount ( RealmModel  realm)
inline

org.keycloak.storage.user.UserQueryProviderを実装しています。

547  {
548  return getUsersCount(realm, false);
549  }
int getUsersCount(RealmModel realm, boolean includeServiceAccount)
Definition: UserCacheSession.java:542

◆ grantToAllUsers()

void org.keycloak.models.cache.infinispan.UserCacheSession.grantToAllUsers ( RealmModel  realm,
RoleModel  role 
)
inline

org.keycloak.storage.user.UserBulkUpdateProviderを実装しています。

821  {
822  addRealmInvalidation(realm.getId()); // easier to just invalidate whole realm
823  getDelegate().grantToAllUsers(realm, role);
824  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void grantToAllUsers(RealmModel realm, RoleModel role)
void addRealmInvalidation(String realmId)
Definition: UserCacheSession.java:884

◆ invalidateConsent()

void org.keycloak.models.cache.infinispan.UserCacheSession.invalidateConsent ( String  userId)
inlineprivate
654  {
656  invalidationEvents.add(UserConsentsUpdatedEvent.create(userId));
657  }
Set< InvalidationEvent > invalidationEvents
Definition: UserCacheSession.java:85
Set< String > invalidations
Definition: UserCacheSession.java:83
void consentInvalidation(String userId, Set< String > invalidations)
Definition: UserCacheManager.java:91
UserCacheManager cache
Definition: UserCacheSession.java:75

◆ invalidateFederationLink()

void org.keycloak.models.cache.infinispan.UserCacheSession.invalidateFederationLink ( String  userId)
inlineprivate
803  {
805  invalidationEvents.add(UserFederationLinkUpdatedEvent.create(userId));
806  }
void federatedIdentityLinkUpdatedInvalidation(String userId, Set< String > invalidations)
Definition: UserCacheManager.java:80
Set< InvalidationEvent > invalidationEvents
Definition: UserCacheSession.java:85
Set< String > invalidations
Definition: UserCacheSession.java:83
UserCacheManager cache
Definition: UserCacheSession.java:75

◆ isRegisteredForInvalidation()

boolean org.keycloak.models.cache.infinispan.UserCacheSession.isRegisteredForInvalidation ( RealmModel  realm,
String  userId 
)
inlineprivate
180  {
181  return realmInvalidations.contains(realm.getId()) || invalidations.contains(userId);
182  }
Set< String > invalidations
Definition: UserCacheSession.java:83
Set< String > realmInvalidations
Definition: UserCacheSession.java:84

◆ onCache()

void org.keycloak.models.cache.infinispan.UserCacheSession.onCache ( RealmModel  realm,
UserAdapter  adapter,
UserModel  delegate 
)
inlineprivate
359  {
360  ((OnUserCache)getDelegate()).onCache(realm, adapter, delegate);
361  ((OnUserCache)session.userCredentialManager()).onCache(realm, adapter, delegate);
362  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
UserCredentialManager userCredentialManager()
KeycloakSession session
Definition: UserCacheSession.java:76
UserProvider delegate
Definition: UserCacheSession.java:77
void onCache(RealmModel realm, UserAdapter adapter, UserModel delegate)
Definition: UserCacheSession.java:359

◆ preRemove() [1/7]

void org.keycloak.models.cache.infinispan.UserCacheSession.preRemove ( RealmModel  realm)
inline

org.keycloak.models.UserProviderを実装しています。

827  {
828  addRealmInvalidation(realm.getId());
829  getDelegate().preRemove(realm);
830  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void preRemove(RealmModel realm)
void addRealmInvalidation(String realmId)
Definition: UserCacheSession.java:884

◆ preRemove() [2/7]

void org.keycloak.models.cache.infinispan.UserCacheSession.preRemove ( RealmModel  realm,
RoleModel  role 
)
inline

org.keycloak.models.UserProviderを実装しています。

833  {
834  addRealmInvalidation(realm.getId()); // easier to just invalidate whole realm
835  getDelegate().preRemove(realm, role);
836  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void preRemove(RealmModel realm)
void addRealmInvalidation(String realmId)
Definition: UserCacheSession.java:884

◆ preRemove() [3/7]

void org.keycloak.models.cache.infinispan.UserCacheSession.preRemove ( RealmModel  realm,
GroupModel  group 
)
inline

org.keycloak.models.UserProviderを実装しています。

838  {
839  addRealmInvalidation(realm.getId()); // easier to just invalidate whole realm
840  getDelegate().preRemove(realm, group);
841  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void preRemove(RealmModel realm)
void addRealmInvalidation(String realmId)
Definition: UserCacheSession.java:884

◆ preRemove() [4/7]

void org.keycloak.models.cache.infinispan.UserCacheSession.preRemove ( RealmModel  realm,
ClientModel  client 
)
inline

org.keycloak.models.UserProviderを実装しています。

845  {
846  addRealmInvalidation(realm.getId()); // easier to just invalidate whole realm
847  getDelegate().preRemove(realm, client);
848  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void preRemove(RealmModel realm)
void addRealmInvalidation(String realmId)
Definition: UserCacheSession.java:884

◆ preRemove() [5/7]

void org.keycloak.models.cache.infinispan.UserCacheSession.preRemove ( ProtocolMapperModel  protocolMapper)
inline

org.keycloak.models.UserProviderを実装しています。

851  {
852  getDelegate().preRemove(protocolMapper);
853  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void preRemove(RealmModel realm)

◆ preRemove() [6/7]

void org.keycloak.models.cache.infinispan.UserCacheSession.preRemove ( ClientScopeModel  clientScope)
inline

org.keycloak.models.UserProviderを実装しています。

856  {
857  // Not needed to invalidate realm probably. Just consents are affected ATM and they are checked if they exists
858  getDelegate().preRemove(clientScope);
859  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void preRemove(RealmModel realm)

◆ preRemove() [7/7]

void org.keycloak.models.cache.infinispan.UserCacheSession.preRemove ( RealmModel  realm,
ComponentModel  component 
)
inline

org.keycloak.models.UserProviderを実装しています。

862  {
863  if (!component.getProviderType().equals(UserStorageProvider.class.getName()) && !component.getProviderType().equals(ClientStorageProvider.class.getName())) return;
864  addRealmInvalidation(realm.getId()); // easier to just invalidate whole realm
865  getDelegate().preRemove(realm, component);
866 
867  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void preRemove(RealmModel realm)
void addRealmInvalidation(String realmId)
Definition: UserCacheSession.java:884

◆ registerUserInvalidation()

void org.keycloak.models.cache.infinispan.UserCacheSession.registerUserInvalidation ( RealmModel  realm,
CachedUser  user 
)
inline
110  {
111  cache.userUpdatedInvalidations(user.getId(), user.getUsername(), user.getEmail(), user.getRealm(), invalidations);
112  invalidationEvents.add(UserUpdatedEvent.create(user.getId(), user.getUsername(), user.getEmail(), user.getRealm()));
113  }
void userUpdatedInvalidations(String userId, String username, String email, String realmId, Set< String > invalidations)
Definition: UserCacheManager.java:55
Set< InvalidationEvent > invalidationEvents
Definition: UserCacheSession.java:85
Set< String > invalidations
Definition: UserCacheSession.java:83
UserCacheManager cache
Definition: UserCacheSession.java:75

◆ removeFederatedIdentity()

boolean org.keycloak.models.cache.infinispan.UserCacheSession.removeFederatedIdentity ( RealmModel  realm,
UserModel  user,
String  socialProvider 
)
inline

org.keycloak.models.UserProviderを実装しています。

809  {
810  // Needs to invalidate both directions
811  FederatedIdentityModel socialLink = getFederatedIdentity(user, socialProvider, realm);
812 
813  UserFederationLinkRemovedEvent event = UserFederationLinkRemovedEvent.create(user.getId(), realm.getId(), socialLink);
814  cache.federatedIdentityLinkRemovedInvalidation(user.getId(), realm.getId(), event.getIdentityProviderId(), event.getSocialUserId(), invalidations);
815  invalidationEvents.add(event);
816 
817  return getDelegate().removeFederatedIdentity(realm, user, socialProvider);
818  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
FederatedIdentityModel getFederatedIdentity(UserModel user, String socialProvider, RealmModel realm)
Definition: UserCacheSession.java:614
Set< InvalidationEvent > invalidationEvents
Definition: UserCacheSession.java:85
boolean removeFederatedIdentity(RealmModel realm, UserModel user, String socialProvider)
Set< String > invalidations
Definition: UserCacheSession.java:83
void federatedIdentityLinkRemovedInvalidation(String userId, String realmId, String identityProviderId, String socialUserId, Set< String > invalidations)
Definition: UserCacheManager.java:84
UserCacheManager cache
Definition: UserCacheSession.java:75

◆ removeImportedUsers()

void org.keycloak.models.cache.infinispan.UserCacheSession.removeImportedUsers ( RealmModel  realm,
String  storageProviderId 
)
inline

org.keycloak.models.UserProviderを実装しています。

870  {
871  getDelegate().removeImportedUsers(realm, storageProviderId);
872  clear();
873  addRealmInvalidation(realm.getId()); // easier to just invalidate whole realm
874  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void removeImportedUsers(RealmModel realm, String storageProviderId)
void clear()
Definition: UserCacheSession.java:96
void addRealmInvalidation(String realmId)
Definition: UserCacheSession.java:884

◆ removeUser()

boolean org.keycloak.models.cache.infinispan.UserCacheSession.removeUser ( RealmModel  realm,
UserModel  user 
)
inline

org.keycloak.storage.user.UserRegistrationProviderを実装しています。

786  {
787  fullyInvalidateUser(realm, user);
788  return getDelegate().removeUser(realm, user);
789  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
boolean removeUser(RealmModel realm, UserModel user)
void fullyInvalidateUser(RealmModel realm, UserModel user)
Definition: UserCacheSession.java:776

◆ revokeConsentForClient()

boolean org.keycloak.models.cache.infinispan.UserCacheSession.revokeConsentForClient ( RealmModel  realm,
String  userId,
String  clientInternalId 
)
inline

org.keycloak.models.UserProviderを実装しています。

638  {
639  invalidateConsent(userId);
640  return getDelegate().revokeConsentForClient(realm, userId, clientInternalId);
641  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void invalidateConsent(String userId)
Definition: UserCacheSession.java:654
boolean revokeConsentForClient(RealmModel realm, String userId, String clientInternalId)

◆ runInvalidations()

void org.keycloak.models.cache.infinispan.UserCacheSession.runInvalidations ( )
inlineprotected
132  {
133  for (String realmId : realmInvalidations) {
135  }
136  for (String invalidation : invalidations) {
137  cache.invalidateObject(invalidation);
138  }
139 
140  cache.sendInvalidationEvents(session, invalidationEvents, InfinispanUserCacheProviderFactory.USER_INVALIDATION_EVENTS);
141  }
void invalidateRealmUsers(String realm, Set< String > invalidations)
Definition: UserCacheManager.java:101
Set< InvalidationEvent > invalidationEvents
Definition: UserCacheSession.java:85
Set< String > invalidations
Definition: UserCacheSession.java:83
KeycloakSession session
Definition: UserCacheSession.java:76
void sendInvalidationEvents(KeycloakSession session, Collection< InvalidationEvent > invalidationEvents, String eventKey)
Definition: CacheManager.java:201
Object invalidateObject(String id)
Definition: CacheManager.java:116
UserCacheManager cache
Definition: UserCacheSession.java:75
Set< String > realmInvalidations
Definition: UserCacheSession.java:84

◆ searchForUser() [1/4]

List<UserModel> org.keycloak.models.cache.infinispan.UserCacheSession.searchForUser ( String  search,
RealmModel  realm 
)
inline

org.keycloak.storage.user.UserQueryProviderを実装しています。

567  {
568  return getDelegate().searchForUser(search, realm);
569  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
List< UserModel > searchForUser(String search, RealmModel realm)

◆ searchForUser() [2/4]

List<UserModel> org.keycloak.models.cache.infinispan.UserCacheSession.searchForUser ( String  search,
RealmModel  realm,
int  firstResult,
int  maxResults 
)
inline

org.keycloak.storage.user.UserQueryProviderを実装しています。

572  {
573  return getDelegate().searchForUser(search, realm, firstResult, maxResults);
574  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
List< UserModel > searchForUser(String search, RealmModel realm)

◆ searchForUser() [3/4]

List<UserModel> org.keycloak.models.cache.infinispan.UserCacheSession.searchForUser ( Map< String, String >  attributes,
RealmModel  realm 
)
inline

org.keycloak.storage.user.UserQueryProviderを実装しています。

577  {
578  return getDelegate().searchForUser(attributes, realm);
579  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
List< UserModel > searchForUser(String search, RealmModel realm)

◆ searchForUser() [4/4]

List<UserModel> org.keycloak.models.cache.infinispan.UserCacheSession.searchForUser ( Map< String, String >  attributes,
RealmModel  realm,
int  firstResult,
int  maxResults 
)
inline

org.keycloak.storage.user.UserQueryProviderを実装しています。

582  {
583  return getDelegate().searchForUser(attributes, realm, firstResult, maxResults);
584  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
List< UserModel > searchForUser(String search, RealmModel realm)

◆ searchForUserByUserAttribute()

List<UserModel> org.keycloak.models.cache.infinispan.UserCacheSession.searchForUserByUserAttribute ( String  attrName,
String  attrValue,
RealmModel  realm 
)
inline

org.keycloak.storage.user.UserQueryProviderを実装しています。

587  {
588  return getDelegate().searchForUserByUserAttribute(attrName, attrValue, realm);
589  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
List< UserModel > searchForUserByUserAttribute(String attrName, String attrValue, RealmModel realm)

◆ setNotBeforeForUser()

void org.keycloak.models.cache.infinispan.UserCacheSession.setNotBeforeForUser ( RealmModel  realm,
UserModel  user,
int  notBefore 
)
inline

org.keycloak.models.UserProviderを実装しています。

731  {
732  if (!isRegisteredForInvalidation(realm, user.getId())) {
733  UserModel foundUser = getUserById(user.getId(), realm);
734  if (foundUser instanceof UserAdapter) {
735  ((UserAdapter) foundUser).invalidate();
736  }
737  }
738 
739  getDelegate().setNotBeforeForUser(realm, user, notBefore);
740 
741  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void setNotBeforeForUser(RealmModel realm, UserModel user, int notBefore)
boolean isRegisteredForInvalidation(RealmModel realm, String userId)
Definition: UserCacheSession.java:180
UserModel getUserById(String id, RealmModel realm)
Definition: UserCacheSession.java:185

◆ toConsentModel()

UserConsentModel org.keycloak.models.cache.infinispan.UserCacheSession.toConsentModel ( RealmModel  realm,
CachedUserConsent  cachedConsent 
)
inlineprivate
710  {
711  ClientModel client = session.realms().getClientById(cachedConsent.getClientDbId(), realm);
712  if (client == null) {
713  return null;
714  }
715 
716  UserConsentModel consentModel = new UserConsentModel(client);
717  consentModel.setCreatedDate(cachedConsent.getCreatedDate());
718  consentModel.setLastUpdatedDate(cachedConsent.getLastUpdatedDate());
719 
720  for (String clientScopeId : cachedConsent.getClientScopeIds()) {
721  ClientScopeModel clientScope = KeycloakModelUtils.findClientScopeById(realm, clientScopeId);
722  if (clientScope != null) {
723  consentModel.addGrantedClientScope(clientScope);
724  }
725  }
726 
727  return consentModel;
728  }
KeycloakSession session
Definition: UserCacheSession.java:76
ClientModel getClientById(String id, RealmModel realm)

◆ unlinkUsers()

void org.keycloak.models.cache.infinispan.UserCacheSession.unlinkUsers ( RealmModel  realm,
String  storageProviderId 
)
inline

org.keycloak.models.UserProviderを実装しています。

877  {
878  getDelegate().unlinkUsers(realm, storageProviderId);
879  clear();
880  addRealmInvalidation(realm.getId()); // easier to just invalidate whole realm
881 
882  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void unlinkUsers(RealmModel realm, String storageProviderId)
void clear()
Definition: UserCacheSession.java:96
void addRealmInvalidation(String realmId)
Definition: UserCacheSession.java:884

◆ updateConsent()

void org.keycloak.models.cache.infinispan.UserCacheSession.updateConsent ( RealmModel  realm,
String  userId,
UserConsentModel  consent 
)
inline

org.keycloak.models.UserProviderを実装しています。

632  {
633  invalidateConsent(userId);
634  getDelegate().updateConsent(realm, userId, consent);
635  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void invalidateConsent(String userId)
Definition: UserCacheSession.java:654
void updateConsent(RealmModel realm, String userId, UserConsentModel consent)

◆ updateFederatedIdentity()

void org.keycloak.models.cache.infinispan.UserCacheSession.updateFederatedIdentity ( RealmModel  realm,
UserModel  federatedUser,
FederatedIdentityModel  federatedIdentityModel 
)
inline

org.keycloak.models.UserProviderを実装しています。

798  {
799  invalidateFederationLink(federatedUser.getId());
800  getDelegate().updateFederatedIdentity(realm, federatedUser, federatedIdentityModel);
801  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void updateFederatedIdentity(RealmModel realm, UserModel federatedUser, FederatedIdentityModel federatedIdentityModel)
void invalidateFederationLink(String userId)
Definition: UserCacheSession.java:803

◆ validateCache()

UserModel org.keycloak.models.cache.infinispan.UserCacheSession.validateCache ( RealmModel  realm,
CachedUser  cached 
)
inlineprotected
293  {
294  if (!realm.getId().equals(cached.getRealm())) {
295  return null;
296  }
297 
298  StorageId storageId = cached.getFederationLink() != null ?
299  new StorageId(cached.getFederationLink(), cached.getId()) : new StorageId(cached.getId());
300 
301  if (!storageId.isLocal()) {
302  ComponentModel component = realm.getComponent(storageId.getProviderId());
303  CacheableStorageProviderModel model = new CacheableStorageProviderModel(component);
304 
305  // although we do set a timeout, Infinispan has no guarantees when the user will be evicted
306  // its also hard to test stuff
307  if (model.shouldInvalidate(cached)) {
308  registerUserInvalidation(realm, cached);
309  return getDelegate().getUserById(cached.getId(), realm);
310  }
311  }
312  return new UserAdapter(cached, this, session, realm);
313  }
UserProvider getDelegate()
Definition: UserCacheSession.java:102
void registerUserInvalidation(RealmModel realm, CachedUser user)
Definition: UserCacheSession.java:110
KeycloakSession session
Definition: UserCacheSession.java:76
UserModel getUserById(String id, RealmModel realm)

メンバ詳解

◆ cache

UserCacheManager org.keycloak.models.cache.infinispan.UserCacheSession.cache
protected

◆ delegate

UserProvider org.keycloak.models.cache.infinispan.UserCacheSession.delegate
protected

◆ invalidationEvents

Set<InvalidationEvent> org.keycloak.models.cache.infinispan.UserCacheSession.invalidationEvents = new HashSet<>()
protected

◆ invalidations

Set<String> org.keycloak.models.cache.infinispan.UserCacheSession.invalidations = new HashSet<>()
protected

◆ logger

final Logger org.keycloak.models.cache.infinispan.UserCacheSession.logger = Logger.getLogger(UserCacheSession.class)
staticprotected

◆ managedUsers

Map<String, UserModel> org.keycloak.models.cache.infinispan.UserCacheSession.managedUsers = new HashMap<>()
protected

◆ realmInvalidations

Set<String> org.keycloak.models.cache.infinispan.UserCacheSession.realmInvalidations = new HashSet<>()
protected

◆ session

KeycloakSession org.keycloak.models.cache.infinispan.UserCacheSession.session
protected

◆ setRollbackOnly

boolean org.keycloak.models.cache.infinispan.UserCacheSession.setRollbackOnly
protected

◆ startupRevision

final long org.keycloak.models.cache.infinispan.UserCacheSession.startupRevision
protected

◆ transactionActive

boolean org.keycloak.models.cache.infinispan.UserCacheSession.transactionActive
protected

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