@Override public int getOfflineSessionIdleTimeout() { if (updated != null) return updated.getOfflineSessionIdleTimeout(); return cached.getOfflineSessionIdleTimeout(); }
@Override public int getOfflineSessionIdleTimeout() { if (isUpdated()) return updated.getOfflineSessionIdleTimeout(); return cached.getOfflineSessionIdleTimeout(); }
@Override public void removeExpired(RealmModel realm) { int expiredOffline = Time.currentTime() - realm.getOfflineSessionIdleTimeout() - SessionTimeoutHelper.PERIODIC_CLEANER_IDLE_TIMEOUT_WINDOW_SECONDS; String offlineStr = offlineToString(true); logger.tracef("Trigger removing expired user sessions for realm '%s'", realm.getName()); int cs = em.createNamedQuery("deleteExpiredClientSessions") .setParameter("realmId", realm.getId()) .setParameter("lastSessionRefresh", expiredOffline) .setParameter("offline", offlineStr) .executeUpdate(); int us = em.createNamedQuery("deleteExpiredUserSessions") .setParameter("realmId", realm.getId()) .setParameter("lastSessionRefresh", expiredOffline) .setParameter("offline", offlineStr) .executeUpdate(); logger.debugf("Removed %d expired user sessions and %d expired client sessions in realm '%s'", us, cs, realm.getName()); }
private void removeExpiredOfflineClientSessions(RealmModel realm) { UserSessionPersisterProvider persister = session.getProvider(UserSessionPersisterProvider.class); int expiredOffline = Time.currentTime() - realm.getOfflineSessionIdleTimeout(); Iterator<String> itr = offlineSessionCache.entrySet().stream().filter(ClientSessionPredicate.create(realm.getId()).expiredRefresh(expiredOffline)).map(Mappers.sessionId()).iterator(); while (itr.hasNext()) { String sessionId = itr.next(); tx.remove(offlineSessionCache, sessionId); persister.removeClientSession(sessionId, true); } }
private void removeExpiredOfflineUserSessions(RealmModel realm) { UserSessionPersisterProvider persister = session.getProvider(UserSessionPersisterProvider.class); int expiredOffline = Time.currentTime() - realm.getOfflineSessionIdleTimeout(); Iterator<Map.Entry<String, SessionEntity>> itr = offlineSessionCache.entrySet().stream().filter(UserSessionPredicate.create(realm.getId()).expired(null, expiredOffline)).iterator(); while (itr.hasNext()) { UserSessionEntity entity = (UserSessionEntity) itr.next().getValue(); tx.remove(offlineSessionCache, entity.getId()); persister.removeUserSession(entity.getId(), true); for (String clientSessionId : entity.getClientSessions()) { tx.remove(offlineSessionCache, clientSessionId); } } }
while (itr.hasNext()) { UserSessionEntity s = itr.next(); if (s.getRealm().equals(realm.getId()) && (s.getLastSessionRefresh() < Time.currentTime() - realm.getOfflineSessionIdleTimeout())) { itr.remove(); remove(s, true); while (citr.hasNext()) { ClientSessionEntity s = citr.next(); if (s.getRealmId().equals(realm.getId()) && (s.getTimestamp() < Time.currentTime() - realm.getOfflineSessionIdleTimeout())) { citr.remove();
public SessionUpdateTask.CrossDCMessageStatus shouldSaveClientSessionToRemoteCache( KeycloakSession kcSession, RealmModel realm, SessionEntityWrapper<AuthenticatedClientSessionEntity> sessionWrapper, UserSessionModel userSession, boolean offline, int newTimestamp) { SessionUpdateTask.CrossDCMessageStatus baseChecks = baseChecks(kcSession, realm ,offline); if (baseChecks != null) { return baseChecks; } UUID clientSessionId = sessionWrapper.getEntity().getId(); if (offline) { Integer lsrr = sessionWrapper.getLocalMetadataNoteInt(AuthenticatedClientSessionEntity.LAST_TIMESTAMP_REMOTE); if (lsrr == null) { lsrr = userSession.getStarted(); } if (lsrr + (realm.getOfflineSessionIdleTimeout() / 2) <= newTimestamp) { logger.debugf("We are going to write remotely for clientSession %s. Remote timestamp: %d, New timestamp: %d", clientSessionId, lsrr, newTimestamp); return SessionUpdateTask.CrossDCMessageStatus.SYNC; } } if (logger.isDebugEnabled()) { logger.debugf("Skip writing timestamp to the remoteCache. ClientSession %s timestamp %d", clientSessionId, newTimestamp); } return SessionUpdateTask.CrossDCMessageStatus.NOT_NEEDED; }
return realm.getOfflineSessionIdleTimeout() * 1000; }); return realm.getOfflineSessionIdleTimeout() * 1000; });
public SessionUpdateTask.CrossDCMessageStatus shouldSaveUserSessionToRemoteCache( KeycloakSession kcSession, RealmModel realm, SessionEntityWrapper<UserSessionEntity> sessionWrapper, boolean offline, int newLastSessionRefresh) { SessionUpdateTask.CrossDCMessageStatus baseChecks = baseChecks(kcSession, realm ,offline); if (baseChecks != null) { return baseChecks; } String userSessionId = sessionWrapper.getEntity().getId(); if (offline) { Integer lsrr = sessionWrapper.getLocalMetadataNoteInt(UserSessionEntity.LAST_SESSION_REFRESH_REMOTE); if (lsrr == null) { lsrr = sessionWrapper.getEntity().getStarted(); } if (lsrr + (realm.getOfflineSessionIdleTimeout() / 2) <= newLastSessionRefresh) { logger.debugf("We are going to write remotely userSession %s. Remote last session refresh: %d, New last session refresh: %d", userSessionId, lsrr, newLastSessionRefresh); return SessionUpdateTask.CrossDCMessageStatus.SYNC; } } if (logger.isDebugEnabled()) { logger.debugf("Skip writing last session refresh to the remoteCache. Session %s newLastSessionRefresh %d", userSessionId, newLastSessionRefresh); } CrossDCLastSessionRefreshStore storeToUse = offline ? offlineStore : store; storeToUse.putLastSessionRefresh(kcSession, userSessionId, realm.getId(), newLastSessionRefresh); return SessionUpdateTask.CrossDCMessageStatus.NOT_NEEDED; }
private void removeExpiredOfflineUserSessions(RealmModel realm) { int expiredOffline = Time.currentTime() - realm.getOfflineSessionIdleTimeout() - SessionTimeoutHelper.PERIODIC_CLEANER_IDLE_TIMEOUT_WINDOW_SECONDS;
ssoSessionIdleTimeout = model.getSsoSessionIdleTimeout(); ssoSessionMaxLifespan = model.getSsoSessionMaxLifespan(); offlineSessionIdleTimeout = model.getOfflineSessionIdleTimeout(); accessTokenLifespan = model.getAccessTokenLifespan(); accessTokenLifespanForImplicitFlow = model.getAccessTokenLifespanForImplicitFlow();
int expiredOffline = Time.currentTime() - realm.getOfflineSessionIdleTimeout(); int expiredDettachedClientSession = Time.currentTime() - RealmInfoUtil.getDettachedClientSessionLifespan(realm);
ssoSessionIdleTimeoutRememberMe = model.getSsoSessionIdleTimeoutRememberMe(); ssoSessionMaxLifespanRememberMe = model.getSsoSessionMaxLifespanRememberMe(); offlineSessionIdleTimeout = model.getOfflineSessionIdleTimeout();
rep.setSsoSessionIdleTimeout(realm.getSsoSessionIdleTimeout()); rep.setSsoSessionMaxLifespan(realm.getSsoSessionMaxLifespan()); rep.setOfflineSessionIdleTimeout(realm.getOfflineSessionIdleTimeout()); rep.setAccessCodeLifespan(realm.getAccessCodeLifespan()); rep.setAccessCodeLifespanUserAction(realm.getAccessCodeLifespanUserAction());