keycloak-service
公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.services.managers.UserSessionCrossDCManager クラス
org.keycloak.services.managers.UserSessionCrossDCManager 連携図
Collaboration graph

公開メンバ関数

 UserSessionCrossDCManager (KeycloakSession session)
 
UserSessionModel getUserSessionWithClient (RealmModel realm, String id, boolean offline, String clientUUID)
 
UserSessionModel getUserSessionWithClient (RealmModel realm, String id, String clientUUID)
 
UserSessionModel getUserSessionIfExistsRemotely (AuthenticationSessionManager asm, RealmModel realm)
 

非公開変数類

final KeycloakSession kcSession
 

静的非公開変数類

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

詳解

著者
Marek Posolda

構築子と解体子

◆ UserSessionCrossDCManager()

org.keycloak.services.managers.UserSessionCrossDCManager.UserSessionCrossDCManager ( KeycloakSession  session)
inline
39  {
40  this.kcSession = session;
41  }
final KeycloakSession kcSession
Definition: UserSessionCrossDCManager.java:37

関数詳解

◆ getUserSessionIfExistsRemotely()

UserSessionModel org.keycloak.services.managers.UserSessionCrossDCManager.getUserSessionIfExistsRemotely ( AuthenticationSessionManager  asm,
RealmModel  realm 
)
inline
64  {
65  List<String> sessionCookies = asm.getAuthSessionCookies(realm);
66 
67  return sessionCookies.stream().map(oldEncodedId -> {
68  AuthSessionId authSessionId = asm.decodeAuthSessionId(oldEncodedId);
69  String sessionId = authSessionId.getDecodedId();
70 
71  // This will remove userSession "locally" if it doesn't exists on remoteCache
72  kcSession.sessions().getUserSessionWithPredicate(realm, sessionId, false, (UserSessionModel userSession2) -> userSession2 == null);
73 
74  UserSessionModel userSession = kcSession.sessions().getUserSession(realm, sessionId);
75 
76  if (userSession != null) {
77  asm.reencodeAuthSessionCookie(oldEncodedId, authSessionId, realm);
78  return userSession;
79  }
80 
81  return null;
82  }).filter(userSession -> Objects.nonNull(userSession)).findFirst().orElse(null);
83  }
final KeycloakSession kcSession
Definition: UserSessionCrossDCManager.java:37

◆ getUserSessionWithClient() [1/2]

UserSessionModel org.keycloak.services.managers.UserSessionCrossDCManager.getUserSessionWithClient ( RealmModel  realm,
String  id,
boolean  offline,
String  clientUUID 
)
inline
45  {
46  return kcSession.sessions().getUserSessionWithPredicate(realm, id, offline, userSession -> userSession.getAuthenticatedClientSessionByClient(clientUUID) != null);
47  }
final KeycloakSession kcSession
Definition: UserSessionCrossDCManager.java:37

◆ getUserSessionWithClient() [2/2]

UserSessionModel org.keycloak.services.managers.UserSessionCrossDCManager.getUserSessionWithClient ( RealmModel  realm,
String  id,
String  clientUUID 
)
inline
52  {
53 
54  return kcSession.sessions().getUserSessionWithPredicate(realm, id, false, (UserSessionModel userSession) -> {
55 
56  AuthenticatedClientSessionModel authSessions = userSession.getAuthenticatedClientSessionByClient(clientUUID);
57  return authSessions != null;
58 
59  });
60  }
final KeycloakSession kcSession
Definition: UserSessionCrossDCManager.java:37

メンバ詳解

◆ kcSession

final KeycloakSession org.keycloak.services.managers.UserSessionCrossDCManager.kcSession
private

◆ logger

final Logger org.keycloak.services.managers.UserSessionCrossDCManager.logger = Logger.getLogger(UserSessionCrossDCManager.class)
staticprivate

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