Interface UserSessionProvider

All Superinterfaces:
Provider
All Known Implementing Classes:
InfinispanUserSessionProvider, PersistentUserSessionProvider, RemoteUserSessionProvider

public interface UserSessionProvider extends Provider
Version:
$Revision: 1 $
Author:
Bill Burke
  • Method Details

    • getKeycloakSession

      KeycloakSession getKeycloakSession()
      Returns currently used Keycloak session.
      Returns:
      KeycloakSession
    • createClientSession

      AuthenticatedClientSessionModel createClientSession(RealmModel realm, ClientModel client, UserSessionModel userSession)
    • getClientSession

      default AuthenticatedClientSessionModel getClientSession(UserSessionModel userSession, ClientModel client, UUID clientSessionId, boolean offline)
    • getClientSession

      AuthenticatedClientSessionModel getClientSession(UserSessionModel userSession, ClientModel client, String clientSessionId, boolean offline)
    • createUserSession

      default UserSessionModel createUserSession(RealmModel realm, UserModel user, String loginUsername, String ipAddress, String authMethod, boolean rememberMe, String brokerSessionId, String brokerUserId)
    • createUserSession

      UserSessionModel createUserSession(String id, RealmModel realm, UserModel user, String loginUsername, String ipAddress, String authMethod, boolean rememberMe, String brokerSessionId, String brokerUserId, UserSessionModel.SessionPersistenceState persistenceState)
      Creates a new user session with the given parameters.
      Parameters:
      id - identifier. Is generated if null
      realm - the realm
      user - user associated with the created user session
      loginUsername -
      ipAddress -
      authMethod -
      rememberMe -
      brokerSessionId -
      brokerUserId -
      persistenceState -
      Returns:
      Model of the created user session
    • getUserSession

      UserSessionModel getUserSession(RealmModel realm, String id)
    • getUserSessionsStream

      Stream<UserSessionModel> getUserSessionsStream(RealmModel realm, UserModel user)
      Obtains the online user sessions associated with the specified user.
      Parameters:
      realm - a reference to the realm.
      user - the user whose sessions are being searched.
      Returns:
      a non-null Stream of online user sessions.
    • getUserSessionsStream

      Stream<UserSessionModel> getUserSessionsStream(RealmModel realm, ClientModel client)
      Obtains the online user sessions associated with the specified client.
      Parameters:
      realm - a reference to the realm.
      client - the client whose user sessions are being searched.
      Returns:
      a non-null Stream of online user sessions.
    • getUserSessionsStream

      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.
      Parameters:
      realm - a reference to the 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.
      Returns:
      a non-null Stream of online user sessions.
    • getUserSessionByBrokerUserIdStream

      Stream<UserSessionModel> getUserSessionByBrokerUserIdStream(RealmModel realm, String brokerUserId)
      Obtains the online user sessions associated with the user that matches the specified brokerUserId.
      Parameters:
      realm - a reference to the realm.
      brokerUserId - the id of the broker user whose sessions are being searched.
      Returns:
      a non-null Stream of online user sessions.
    • getUserSessionByBrokerSessionId

      UserSessionModel getUserSessionByBrokerSessionId(RealmModel realm, String brokerSessionId)
    • getUserSessionWithPredicate

      UserSessionModel getUserSessionWithPredicate(RealmModel realm, String id, boolean offline, Predicate<UserSessionModel> predicate)
      Return userSession of specified ID as long as the predicate passes. Otherwise, returns null. If predicate doesn't pass, implementation can do some best-effort actions to try to have predicate passing (e.g. download userSession from other DC)
    • getActiveUserSessions

      long getActiveUserSessions(RealmModel realm, ClientModel client)
    • getActiveClientSessionStats

      Map<String,Long> getActiveClientSessionStats(RealmModel realm, boolean offline)
      Returns a summary of client sessions key is client.getId()
      Parameters:
      realm -
      offline -
      Returns:
    • removeUserSession

      void removeUserSession(RealmModel realm, UserSessionModel session)
      This will remove attached ClientLoginSessionModels too
    • removeUserSessions

      void removeUserSessions(RealmModel realm, UserModel user)
    • removeAllExpired

      void removeAllExpired()
      Remove expired user sessions and client sessions in all the realms
    • removeExpired

      void removeExpired(RealmModel realm)
      Removes expired user sessions owned by this realm from this provider. If this `UserSessionProvider` uses `UserSessionPersister`, the removal of the expired user sessions is also propagated to relevant `UserSessionPersister`.
      Parameters:
      realm - RealmModel Realm where all the expired user sessions to be removed from.
    • removeUserSessions

      void removeUserSessions(RealmModel realm)
    • onRealmRemoved

      void onRealmRemoved(RealmModel realm)
    • onClientRemoved

      void onClientRemoved(RealmModel realm, ClientModel client)
    • createOfflineUserSession

      UserSessionModel createOfflineUserSession(UserSessionModel userSession)
      Newly created userSession won't contain attached AuthenticatedClientSessions
    • getOfflineUserSession

      UserSessionModel getOfflineUserSession(RealmModel realm, String userSessionId)
    • removeOfflineUserSession

      void removeOfflineUserSession(RealmModel realm, UserSessionModel userSession)
      Removes the attached clientSessions as well
    • createOfflineClientSession

      AuthenticatedClientSessionModel createOfflineClientSession(AuthenticatedClientSessionModel clientSession, UserSessionModel offlineUserSession)
      Will automatically attach newly created offline client session to the offlineUserSession
    • getOfflineUserSessionsStream

      Stream<UserSessionModel> getOfflineUserSessionsStream(RealmModel realm, UserModel user)
      Obtains the offline user sessions associated with the specified user.
      Parameters:
      realm - a reference to the realm.
      user - the user whose offline sessions are being searched.
      Returns:
      a non-null Stream of offline user sessions.
    • getOfflineUserSessionByBrokerUserIdStream

      Stream<UserSessionModel> getOfflineUserSessionByBrokerUserIdStream(RealmModel realm, String brokerUserId)
      Obtains the offline user sessions associated with the user that matches the specified brokerUserId.
      Parameters:
      realm - a reference to the realm.
      brokerUserId - the id of the broker user whose sessions are being searched.
      Returns:
      a non-null Stream of offline user sessions.
    • getOfflineSessionsCount

      long getOfflineSessionsCount(RealmModel realm, ClientModel client)
    • getOfflineUserSessionsStream

      Stream<UserSessionModel> getOfflineUserSessionsStream(RealmModel realm, ClientModel client, Integer firstResult, Integer maxResults)
      Obtains the offline user sessions associated with the specified client, starting from the firstResult and containing at most maxResults.
      Parameters:
      realm - a reference to the 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.
      Returns:
      a non-null Stream of offline user sessions.
    • importUserSessions

      @Deprecated(forRemoval=true) default void importUserSessions(Collection<UserSessionModel> persistentUserSessions, boolean offline)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Deprecated as offline session preloading was removed in KC25. This method will be removed in KC27.
      Triggered by persister during pre-load. It imports authenticatedClientSessions too.
    • close

      void close()
      Specified by:
      close in interface Provider
    • getStartupTime

      int getStartupTime(RealmModel realm)
    • migrate

      default void migrate(String modelVersion)
    • getUserSessionIfClientExists

      default UserSessionModel getUserSessionIfClientExists(RealmModel realm, String userSessionId, boolean offline, String clientUUID)
      Returns the UserSessionModel if the user session with ID userSessionId exist, and it has an AuthenticatedClientSessionModel from a ClientModel with ID clientUUID.

      If the AuthenticatedClientSessionModel from the client or the UserSessionModel does not exist, this method returns null.

      Parameters:
      realm - The RealmModel where the session belongs to.
      userSessionId - The ID of the UserSessionModel.
      offline - If true, it fetches an offline session and, if false, an online session.
      clientUUID - The ClientModel.getId().
      Returns:
      The UserSessionModel if it has a session from the clientUUID.