public class InfinispanUserSessionProvider extends Object implements UserSessionProvider
| Constructor and Description |
|---|
InfinispanUserSessionProvider(KeycloakSession session,
RemoteCacheInvoker remoteCacheInvoker,
CrossDCLastSessionRefreshStore lastSessionRefreshStore,
CrossDCLastSessionRefreshStore offlineLastSessionRefreshStore,
PersisterLastSessionRefreshStore persisterLastSessionRefreshStore,
InfinispanKeyGenerator keyGenerator,
org.infinispan.Cache<String,SessionEntityWrapper<UserSessionEntity>> sessionCache,
org.infinispan.Cache<String,SessionEntityWrapper<UserSessionEntity>> offlineSessionCache,
org.infinispan.Cache<UUID,SessionEntityWrapper<AuthenticatedClientSessionEntity>> clientSessionCache,
org.infinispan.Cache<UUID,SessionEntityWrapper<AuthenticatedClientSessionEntity>> offlineClientSessionCache,
boolean loadOfflineSessionsStatsFromDatabase) |
| Modifier and Type | Method and Description |
|---|---|
void |
close() |
AuthenticatedClientSessionModel |
createClientSession(RealmModel realm,
ClientModel client,
UserSessionModel userSession) |
AuthenticatedClientSessionModel |
createOfflineClientSession(AuthenticatedClientSessionModel clientSession,
UserSessionModel offlineUserSession)
Will automatically attach newly created offline client session to the offlineUserSession
|
UserSessionModel |
createOfflineUserSession(UserSessionModel userSession)
Newly created userSession won't contain attached AuthenticatedClientSessions
|
UserSessionModel |
createUserSession(RealmModel realm,
UserModel user,
String loginUsername,
String ipAddress,
String authMethod,
boolean rememberMe,
String brokerSessionId,
String brokerUserId) |
UserSessionModel |
createUserSession(String id,
RealmModel realm,
UserModel user,
String loginUsername,
String ipAddress,
String authMethod,
boolean rememberMe,
String brokerSessionId,
String brokerUserId,
UserSessionModel.SessionPersistenceState persistenceState) |
Map<String,Long> |
getActiveClientSessionStats(RealmModel realm,
boolean offline)
Returns a summary of client sessions key is client.getId()
|
long |
getActiveUserSessions(RealmModel realm,
ClientModel client) |
protected org.infinispan.Cache<String,SessionEntityWrapper<UserSessionEntity>> |
getCache(boolean offline) |
AuthenticatedClientSessionAdapter |
getClientSession(UserSessionModel userSession,
ClientModel client,
String clientSessionId,
boolean offline) |
AuthenticatedClientSessionAdapter |
getClientSession(UserSessionModel userSession,
ClientModel client,
UUID clientSessionId,
boolean offline) |
protected org.infinispan.Cache<UUID,SessionEntityWrapper<AuthenticatedClientSessionEntity>> |
getClientSessionCache(boolean offline) |
protected InfinispanChangelogBasedTransaction<UUID,AuthenticatedClientSessionEntity> |
getClientSessionTransaction(boolean offline) |
KeycloakSession |
getKeycloakSession()
Returns currently used Keycloak session.
|
protected CrossDCLastSessionRefreshStore |
getLastSessionRefreshStore() |
protected CrossDCLastSessionRefreshStore |
getOfflineLastSessionRefreshStore() |
long |
getOfflineSessionsCount(RealmModel realm,
ClientModel client) |
UserSessionAdapter |
getOfflineUserSession(RealmModel realm,
String userSessionId) |
UserSessionModel |
getOfflineUserSessionByBrokerSessionId(RealmModel realm,
String brokerSessionId) |
Stream<UserSessionModel> |
getOfflineUserSessionByBrokerUserIdStream(RealmModel realm,
String brokerUserId)
Obtains the offline user sessions associated with the user that matches the specified
brokerUserId. |
Stream<UserSessionModel> |
getOfflineUserSessionsStream(RealmModel realm,
ClientModel client,
Integer first,
Integer max)
Obtains the offline user sessions associated with the specified client, starting from the
firstResult and
containing at most maxResults. |
Stream<UserSessionModel> |
getOfflineUserSessionsStream(RealmModel realm,
UserModel user)
Obtains the offline user sessions associated with the specified user.
|
protected PersisterLastSessionRefreshStore |
getPersisterLastSessionRefreshStore() |
protected InfinispanChangelogBasedTransaction<String,UserSessionEntity> |
getTransaction(boolean offline) |
UserSessionModel |
getUserSession(RealmModel realm,
String id) |
protected UserSessionAdapter |
getUserSession(RealmModel realm,
String id,
boolean offline) |
UserSessionModel |
getUserSessionByBrokerSessionId(RealmModel realm,
String brokerSessionId) |
Stream<UserSessionModel> |
getUserSessionByBrokerUserIdStream(RealmModel realm,
String brokerUserId)
Obtains the online user sessions associated with the user that matches the specified
brokerUserId. |
protected Stream<UserSessionModel> |
getUserSessionModels(RealmModel realm,
Integer firstResult,
Integer maxResults,
boolean offline,
UserSessionPredicate predicate) |
protected long |
getUserSessionsCount(RealmModel realm,
ClientModel client,
boolean offline) |
Stream<UserSessionModel> |
getUserSessionsStream(RealmModel realm,
ClientModel client)
Obtains the online user sessions associated with the specified client.
|
Stream<UserSessionModel> |
getUserSessionsStream(RealmModel realm,
ClientModel client,
Integer firstResult,
Integer maxResults)
Obtains the online user sessions associated with the specified client, starting from the
firstResult and containing
at most maxResults. |
protected Stream<UserSessionModel> |
getUserSessionsStream(RealmModel realm,
ClientModel client,
Integer firstResult,
Integer maxResults,
boolean offline) |
Stream<UserSessionModel> |
getUserSessionsStream(RealmModel realm,
UserModel user)
Obtains the online user sessions associated with the specified user.
|
protected Stream<UserSessionModel> |
getUserSessionsStream(RealmModel realm,
UserSessionPredicate predicate,
boolean offline) |
UserSessionModel |
getUserSessionWithPredicate(RealmModel realm,
String id,
boolean offline,
Predicate<UserSessionModel> predicate)
Return userSession of specified ID as long as the predicate passes.
|
protected UserSessionAdapter |
importUserSession(UserSessionModel userSession,
boolean offline) |
void |
importUserSessions(Collection<UserSessionModel> persistentUserSessions,
boolean offline)
Triggered by persister during pre-load.
|
void |
onClientRemoved(RealmModel realm,
ClientModel client) |
protected void |
onClientRemovedEvent(String realmId,
String clientUuid) |
void |
onRealmRemoved(RealmModel realm) |
protected void |
onRealmRemovedEvent(String realmId) |
protected void |
onRemoveUserSessionsEvent(String realmId) |
protected void |
onUserRemoved(RealmModel realm,
UserModel user) |
void |
removeAllExpired()
Remove expired user sessions and client sessions in all the realms
|
void |
removeExpired(RealmModel realm)
Removes expired user sessions owned by this realm from this provider.
|
void |
removeLocalUserSessions(String realmId,
boolean offline) |
void |
removeOfflineUserSession(RealmModel realm,
UserSessionModel userSession)
Removes the attached clientSessions as well
|
void |
removeUserSession(RealmModel realm,
UserSessionModel session)
This will remove attached ClientLoginSessionModels too
|
protected void |
removeUserSession(UserSessionEntity sessionEntity,
boolean offline) |
void |
removeUserSessions(RealmModel realm) |
void |
removeUserSessions(RealmModel realm,
UserModel user) |
protected void |
removeUserSessions(RealmModel realm,
UserModel user,
boolean offline) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitaddUserLoginFailure, getOfflineUserSessionByBrokerUserId, getOfflineUserSessions, getOfflineUserSessions, getUserLoginFailure, getUserSessionByBrokerUserId, getUserSessions, getUserSessions, getUserSessions, removeAllUserLoginFailures, removeUserLoginFailureprotected final KeycloakSession session
protected final org.infinispan.Cache<String,SessionEntityWrapper<UserSessionEntity>> sessionCache
protected final org.infinispan.Cache<String,SessionEntityWrapper<UserSessionEntity>> offlineSessionCache
protected final org.infinispan.Cache<UUID,SessionEntityWrapper<AuthenticatedClientSessionEntity>> clientSessionCache
protected final org.infinispan.Cache<UUID,SessionEntityWrapper<AuthenticatedClientSessionEntity>> offlineClientSessionCache
protected final InfinispanChangelogBasedTransaction<String,UserSessionEntity> sessionTx
protected final InfinispanChangelogBasedTransaction<String,UserSessionEntity> offlineSessionTx
protected final InfinispanChangelogBasedTransaction<UUID,AuthenticatedClientSessionEntity> clientSessionTx
protected final InfinispanChangelogBasedTransaction<UUID,AuthenticatedClientSessionEntity> offlineClientSessionTx
protected final SessionEventsSenderTransaction clusterEventsSenderTx
protected final CrossDCLastSessionRefreshStore lastSessionRefreshStore
protected final CrossDCLastSessionRefreshStore offlineLastSessionRefreshStore
protected final PersisterLastSessionRefreshStore persisterLastSessionRefreshStore
protected final RemoteCacheInvoker remoteCacheInvoker
protected final InfinispanKeyGenerator keyGenerator
protected final boolean loadOfflineSessionsStatsFromDatabase
public InfinispanUserSessionProvider(KeycloakSession session, RemoteCacheInvoker remoteCacheInvoker, CrossDCLastSessionRefreshStore lastSessionRefreshStore, CrossDCLastSessionRefreshStore offlineLastSessionRefreshStore, PersisterLastSessionRefreshStore persisterLastSessionRefreshStore, InfinispanKeyGenerator keyGenerator, org.infinispan.Cache<String,SessionEntityWrapper<UserSessionEntity>> sessionCache, org.infinispan.Cache<String,SessionEntityWrapper<UserSessionEntity>> offlineSessionCache, org.infinispan.Cache<UUID,SessionEntityWrapper<AuthenticatedClientSessionEntity>> clientSessionCache, org.infinispan.Cache<UUID,SessionEntityWrapper<AuthenticatedClientSessionEntity>> offlineClientSessionCache, boolean loadOfflineSessionsStatsFromDatabase)
protected org.infinispan.Cache<String,SessionEntityWrapper<UserSessionEntity>> getCache(boolean offline)
protected InfinispanChangelogBasedTransaction<String,UserSessionEntity> getTransaction(boolean offline)
protected org.infinispan.Cache<UUID,SessionEntityWrapper<AuthenticatedClientSessionEntity>> getClientSessionCache(boolean offline)
protected InfinispanChangelogBasedTransaction<UUID,AuthenticatedClientSessionEntity> getClientSessionTransaction(boolean offline)
protected CrossDCLastSessionRefreshStore getLastSessionRefreshStore()
protected CrossDCLastSessionRefreshStore getOfflineLastSessionRefreshStore()
protected PersisterLastSessionRefreshStore getPersisterLastSessionRefreshStore()
public KeycloakSession getKeycloakSession()
UserSessionProvidergetKeycloakSession in interface UserSessionProviderKeycloakSessionpublic AuthenticatedClientSessionModel createClientSession(RealmModel realm, ClientModel client, UserSessionModel userSession)
createClientSession in interface UserSessionProviderpublic UserSessionModel createUserSession(RealmModel realm, UserModel user, String loginUsername, String ipAddress, String authMethod, boolean rememberMe, String brokerSessionId, String brokerUserId)
createUserSession in interface UserSessionProviderpublic UserSessionModel createUserSession(String id, RealmModel realm, UserModel user, String loginUsername, String ipAddress, String authMethod, boolean rememberMe, String brokerSessionId, String brokerUserId, UserSessionModel.SessionPersistenceState persistenceState)
createUserSession in interface UserSessionProviderpublic UserSessionModel getUserSession(RealmModel realm, String id)
getUserSession in interface UserSessionProviderprotected UserSessionAdapter getUserSession(RealmModel realm, String id, boolean offline)
protected Stream<UserSessionModel> getUserSessionsStream(RealmModel realm, UserSessionPredicate predicate, boolean offline)
public AuthenticatedClientSessionAdapter getClientSession(UserSessionModel userSession, ClientModel client, String clientSessionId, boolean offline)
getClientSession in interface UserSessionProviderpublic AuthenticatedClientSessionAdapter getClientSession(UserSessionModel userSession, ClientModel client, UUID clientSessionId, boolean offline)
getClientSession in interface UserSessionProviderpublic Stream<UserSessionModel> getUserSessionsStream(RealmModel realm, UserModel user)
UserSessionProvidergetUserSessionsStream in interface UserSessionProviderrealm - a reference to the realm.user - the user whose sessions are being searched.Stream of online user sessions.public Stream<UserSessionModel> getUserSessionByBrokerUserIdStream(RealmModel realm, String brokerUserId)
UserSessionProviderbrokerUserId.getUserSessionByBrokerUserIdStream in interface UserSessionProviderrealm - a reference to the realm.brokerUserId - the id of the broker user whose sessions are being searched.Stream of online user sessions.public UserSessionModel getUserSessionByBrokerSessionId(RealmModel realm, String brokerSessionId)
getUserSessionByBrokerSessionId in interface UserSessionProviderpublic Stream<UserSessionModel> getUserSessionsStream(RealmModel realm, ClientModel client)
UserSessionProvidergetUserSessionsStream in interface UserSessionProviderrealm - a reference to the realm.client - the client whose user sessions are being searched.Stream of online user sessions.public Stream<UserSessionModel> getUserSessionsStream(RealmModel realm, ClientModel client, Integer firstResult, Integer maxResults)
UserSessionProviderfirstResult and containing
at most maxResults.getUserSessionsStream in interface UserSessionProviderrealm - a reference tot he realm.client - the client whose user sessions are being searched.firstResult - first result to return. Ignored if negative or null.maxResults - maximum number of results to return. Ignored if negative or null.Stream of online user sessions.protected Stream<UserSessionModel> getUserSessionsStream(RealmModel realm, ClientModel client, Integer firstResult, Integer maxResults, boolean offline)
protected Stream<UserSessionModel> getUserSessionModels(RealmModel realm, Integer firstResult, Integer maxResults, boolean offline, UserSessionPredicate predicate)
public UserSessionModel getUserSessionWithPredicate(RealmModel realm, String id, boolean offline, Predicate<UserSessionModel> predicate)
UserSessionProvidernull.
If predicate doesn't pass, implementation can do some best-effort actions to try have predicate passing (eg. download userSession from other DC)getUserSessionWithPredicate in interface UserSessionProviderpublic long getActiveUserSessions(RealmModel realm, ClientModel client)
getActiveUserSessions in interface UserSessionProviderpublic Map<String,Long> getActiveClientSessionStats(RealmModel realm, boolean offline)
UserSessionProvidergetActiveClientSessionStats in interface UserSessionProviderprotected long getUserSessionsCount(RealmModel realm, ClientModel client, boolean offline)
public void removeUserSession(RealmModel realm, UserSessionModel session)
UserSessionProviderremoveUserSession in interface UserSessionProviderpublic void removeUserSessions(RealmModel realm, UserModel user)
removeUserSessions in interface UserSessionProviderprotected void removeUserSessions(RealmModel realm, UserModel user, boolean offline)
public void removeAllExpired()
UserSessionProviderremoveAllExpired in interface UserSessionProviderpublic void removeExpired(RealmModel realm)
UserSessionProvideruser sessions is also propagated to relevant `UserSessionPersister`.removeExpired in interface UserSessionProviderrealm - RealmModel Realm where all the expired user sessions to be removed from.public void removeUserSessions(RealmModel realm)
removeUserSessions in interface UserSessionProviderprotected void onRemoveUserSessionsEvent(String realmId)
public void removeLocalUserSessions(String realmId, boolean offline)
public void onRealmRemoved(RealmModel realm)
onRealmRemoved in interface UserSessionProviderprotected void onRealmRemovedEvent(String realmId)
public void onClientRemoved(RealmModel realm, ClientModel client)
onClientRemoved in interface UserSessionProviderprotected void onUserRemoved(RealmModel realm, UserModel user)
public void close()
close in interface UserSessionProviderclose in interface Providerprotected void removeUserSession(UserSessionEntity sessionEntity, boolean offline)
public UserSessionModel createOfflineUserSession(UserSessionModel userSession)
UserSessionProvidercreateOfflineUserSession in interface UserSessionProviderpublic UserSessionAdapter getOfflineUserSession(RealmModel realm, String userSessionId)
getOfflineUserSession in interface UserSessionProviderpublic UserSessionModel getOfflineUserSessionByBrokerSessionId(RealmModel realm, String brokerSessionId)
getOfflineUserSessionByBrokerSessionId in interface UserSessionProviderpublic Stream<UserSessionModel> getOfflineUserSessionByBrokerUserIdStream(RealmModel realm, String brokerUserId)
UserSessionProviderbrokerUserId.getOfflineUserSessionByBrokerUserIdStream in interface UserSessionProviderrealm - a reference to the realm.brokerUserId - the id of the broker user whose sessions are being searched.Stream of offline user sessions.public void removeOfflineUserSession(RealmModel realm, UserSessionModel userSession)
UserSessionProviderremoveOfflineUserSession in interface UserSessionProviderpublic AuthenticatedClientSessionModel createOfflineClientSession(AuthenticatedClientSessionModel clientSession, UserSessionModel offlineUserSession)
UserSessionProvidercreateOfflineClientSession in interface UserSessionProviderpublic Stream<UserSessionModel> getOfflineUserSessionsStream(RealmModel realm, UserModel user)
UserSessionProvidergetOfflineUserSessionsStream in interface UserSessionProviderrealm - a reference to the realm.user - the user whose offline sessions are being searched.Stream of offline user sessions.public long getOfflineSessionsCount(RealmModel realm, ClientModel client)
getOfflineSessionsCount in interface UserSessionProviderpublic Stream<UserSessionModel> getOfflineUserSessionsStream(RealmModel realm, ClientModel client, Integer first, Integer max)
UserSessionProviderfirstResult and
containing at most maxResults.getOfflineUserSessionsStream in interface UserSessionProviderrealm - a reference tot he realm.client - the client whose user sessions are being searched.first - first result to return. Ignored if negative or null.max - maximum number of results to return. Ignored if negative or null.Stream of offline user sessions.public void importUserSessions(Collection<UserSessionModel> persistentUserSessions, boolean offline)
UserSessionProviderimportUserSessions in interface UserSessionProviderprotected UserSessionAdapter importUserSession(UserSessionModel userSession, boolean offline)
Copyright © 2021 JBoss by Red Hat. All rights reserved.