@GET @Path("/clear-event-store-older-than") @Produces(MediaType.APPLICATION_JSON) public Response clearEventStore(@QueryParam("realmId") String realmId, @QueryParam("olderThan") long olderThan) { EventStoreProvider eventStore = session.getProvider(EventStoreProvider.class); eventStore.clear(realmId, olderThan); return Response.ok().build(); }
@Override public int getSessionsCount(KeycloakSession session) { UserSessionPersisterProvider persister = session.getProvider(UserSessionPersisterProvider.class); return persister.getUserSessionsCount(true); }
public void sendInvalidationEvents(KeycloakSession session, Collection<InvalidationEvent> invalidationEvents, String eventKey) { ClusterProvider clusterProvider = session.getProvider(ClusterProvider.class); // Maybe add InvalidationEvent, which will be collection of all invalidationEvents? That will reduce cluster traffic even more. for (InvalidationEvent event : invalidationEvents) { clusterProvider.notify(eventKey, event, true, ClusterProvider.DCNotify.ALL_DCS); } }
@POST @Path("/on-admin-event") @Consumes(MediaType.APPLICATION_JSON) public void onAdminEvent(final AdminEventRepresentation rep, @QueryParam("includeRepresentation") boolean includeRepresentation) { EventStoreProvider eventStore = session.getProvider(EventStoreProvider.class); eventStore.onEvent(repToModel(rep), includeRepresentation); }
@Override protected void commitImpl() { ClusterProvider cluster = session.getProvider(ClusterProvider.class); // TODO bulk notify (send whole list instead of separate events?) for (DCEventContext entry : sessionEvents) { cluster.notify(entry.event.getEventKey(), entry.event, false, entry.dcNotify); } }
@Override public UserFederatedStorageProvider create(KeycloakSession session) { MongoConnectionProvider connection = session.getProvider(MongoConnectionProvider.class); return new MongoUserFederatedStorageProvider(session, connection.getInvocationContext()); }
@Override public RealmProvider create(KeycloakSession session) { MongoConnectionProvider connection = session.getProvider(MongoConnectionProvider.class); return new MongoRealmProvider(session, connection.getInvocationContext()); }
@Override public UserFederatedStorageProvider create(KeycloakSession session) { EntityManager em = session.getProvider(JpaConnectionProvider.class).getEntityManager(); return new JpaUserFederatedStorageProvider(session, em); }
@Override public StoreFactory create(KeycloakSession session) { AuthorizationProvider provider = session.getProvider(AuthorizationProvider.class); return new JPAStoreFactory(getEntityManager(session), provider); }
@Override public EventStoreProvider create(KeycloakSession session) { JpaConnectionProvider connection = session.getProvider(JpaConnectionProvider.class); return new JpaEventStoreProvider(connection.getEntityManager()); }
public KeycloakUriInfo(KeycloakSession session, UriInfo delegate) { this.delegate = delegate; HostnameProvider hostnameProvider = session.getProvider(HostnameProvider.class); this.scheme = hostnameProvider.getScheme(delegate); this.hostname = hostnameProvider.getHostname(delegate); this.port = hostnameProvider.getPort(delegate); }
private String getRoute(String sessionId) { InfinispanConnectionProvider ispnProvider = session.getProvider(InfinispanConnectionProvider.class); Cache cache = ispnProvider.getCache(InfinispanConnectionProvider.AUTHENTICATION_SESSIONS_CACHE_NAME); return InfinispanUtil.getTopologyInfo(session).getRouteName(cache, sessionId); }
protected void runInvalidations() { ClusterProvider cluster = session.getProvider(ClusterProvider.class); for (String cacheKey : invalidations) { keys.remove(cacheKey); cluster.notify(InfinispanPublicKeyStorageProviderFactory.PUBLIC_KEY_STORAGE_INVALIDATION_EVENT, PublicKeyStorageInvalidationEvent.create(cacheKey), true, ClusterProvider.DCNotify.ALL_DCS); } }
@Override public void onEvent(ProviderEvent event) { if (keysCache == null) { return; } SessionAndKeyHolder cacheKey = getCacheKeyToInvalidate(event); if (cacheKey != null) { log.debugf("Invalidating %s from keysCache", cacheKey); InfinispanPublicKeyStorageProvider provider = (InfinispanPublicKeyStorageProvider) cacheKey.session.getProvider(PublicKeyStorageProvider.class, getId()); provider.addInvalidation(cacheKey.cacheKey); } }
@Override public void clear() { cache.clear(); ClusterProvider cluster = session.getProvider(ClusterProvider.class); cluster.notify(InfinispanUserCacheProviderFactory.USER_CLEAR_CACHE_EVENTS, new ClearCacheEvent(), true, ClusterProvider.DCNotify.ALL_DCS); }
public CrossDCLastSessionRefreshStore createAndInit(KeycloakSession kcSession, Cache<String, SessionEntityWrapper<UserSessionEntity>> cache, long timerIntervalMs, int maxIntervalBetweenMessagesSeconds, int maxCount, boolean offline) { String eventKey = offline ? LSR_OFFLINE_PERIODIC_TASK_NAME : LSR_PERIODIC_TASK_NAME; CrossDCLastSessionRefreshStore store = createStoreInstance(maxIntervalBetweenMessagesSeconds, maxCount, eventKey); // Register listener ClusterProvider cluster = kcSession.getProvider(ClusterProvider.class); cluster.registerListener(eventKey, new CrossDCLastSessionRefreshListener(kcSession, cache, offline)); // Setup periodic timer check setupPeriodicTimer(kcSession, store, timerIntervalMs, eventKey); return store; }
@Override public InfinispanUserSessionProvider create(KeycloakSession session) { InfinispanConnectionProvider connections = session.getProvider(InfinispanConnectionProvider.class); Cache<String, SessionEntityWrapper<UserSessionEntity>> cache = connections.getCache(InfinispanConnectionProvider.USER_SESSION_CACHE_NAME); Cache<String, SessionEntityWrapper<UserSessionEntity>> offlineSessionsCache = connections.getCache(InfinispanConnectionProvider.OFFLINE_USER_SESSION_CACHE_NAME); Cache<UUID, SessionEntityWrapper<AuthenticatedClientSessionEntity>> clientSessionCache = connections.getCache(InfinispanConnectionProvider.CLIENT_SESSION_CACHE_NAME); Cache<UUID, SessionEntityWrapper<AuthenticatedClientSessionEntity>> offlineClientSessionsCache = connections.getCache(InfinispanConnectionProvider.OFFLINE_CLIENT_SESSION_CACHE_NAME); Cache<LoginFailureKey, SessionEntityWrapper<LoginFailureEntity>> loginFailures = connections.getCache(InfinispanConnectionProvider.LOGIN_FAILURE_CACHE_NAME); return new InfinispanUserSessionProvider(session, remoteCacheInvoker, lastSessionRefreshStore, offlineLastSessionRefreshStore, persisterLastSessionRefreshStore, keyGenerator, cache, offlineSessionsCache, clientSessionCache, offlineClientSessionsCache, loginFailures); }
@Override public void run(KeycloakSession session) { InfinispanConnectionProvider connections = session.getProvider(InfinispanConnectionProvider.class); Cache<String, SessionEntity> cache = connections.getCache(InfinispanConnectionProvider.OFFLINE_SESSION_CACHE_NAME); InfinispanUserSessionInitializer initializer = new InfinispanUserSessionInitializer(sessionFactory, cache, new OfflineUserSessionLoader(), maxErrors, sessionsPerSegment, "offlineUserSessions"); initializer.initCache(); initializer.loadPersistentSessions(); }
@Override public EventStoreProvider create(KeycloakSession session) { MongoConnectionProvider connection = session.getProvider(MongoConnectionProvider.class); DBCollection collection = connection.getDB().getCollection("events"); DBCollection adminCollection = connection.getDB().getCollection("adminEvents"); collection.setWriteConcern(WriteConcern.UNACKNOWLEDGED); adminCollection.setWriteConcern(WriteConcern.UNACKNOWLEDGED); return new MongoEventStoreProvider(collection, adminCollection); }
@Override public UserSessionProvider create(KeycloakSession session) { if (!compatMode) { InfinispanConnectionProvider connections = session.getProvider(InfinispanConnectionProvider.class); Cache<String, SessionEntity> cache = connections.getCache(InfinispanConnectionProvider.SESSION_CACHE_NAME); Cache<String, SessionEntity> offlineSessionsCache = connections.getCache(InfinispanConnectionProvider.OFFLINE_SESSION_CACHE_NAME); Cache<LoginFailureKey, LoginFailureEntity> loginFailures = connections.getCache(InfinispanConnectionProvider.LOGIN_FAILURE_CACHE_NAME); return isStreamMode() ? new InfinispanUserSessionProvider(session, cache, offlineSessionsCache, loginFailures) : new CompatInfinispanUserSessionProvider(session, cache, offlineSessionsCache, loginFailures); } else { return compatProviderFactory.create(session); } }