Search in sources :

Example 1 with LoginFailureKey

use of org.keycloak.models.sessions.infinispan.entities.LoginFailureKey in project keycloak by keycloak.

the class InfinispanUserLoginFailureProvider method removeAllLocalUserLoginFailuresEvent.

protected void removeAllLocalUserLoginFailuresEvent(String realmId) {
    log.tracef("removeAllLocalUserLoginFailuresEvent(%s)%s", realmId, getShortStackTrace());
    FuturesHelper futures = new FuturesHelper();
    Cache<LoginFailureKey, SessionEntityWrapper<LoginFailureEntity>> localCache = CacheDecorators.localCache(loginFailureCache);
    Cache<LoginFailureKey, SessionEntityWrapper<LoginFailureEntity>> localCacheStoreIgnore = CacheDecorators.skipCacheLoaders(localCache);
    localCacheStoreIgnore.entrySet().stream().filter(UserLoginFailurePredicate.create(realmId)).map(Mappers.loginFailureId()).forEach(loginFailureKey -> {
        // Remove loginFailure from remoteCache too. Use removeAsync for better perf
        Future future = localCache.removeAsync(loginFailureKey);
        futures.addTask(future);
    });
    futures.waitForAllToFinish();
    log.debugf("Removed %d login failures in realm %s", futures.size(), realmId);
}
Also used : Future(java.util.concurrent.Future) LoginFailureKey(org.keycloak.models.sessions.infinispan.entities.LoginFailureKey) SessionEntityWrapper(org.keycloak.models.sessions.infinispan.changes.SessionEntityWrapper) FuturesHelper(org.keycloak.models.sessions.infinispan.util.FuturesHelper)

Example 2 with LoginFailureKey

use of org.keycloak.models.sessions.infinispan.entities.LoginFailureKey in project keycloak by keycloak.

the class InfinispanUserLoginFailureProvider method removeUserLoginFailure.

@Override
public void removeUserLoginFailure(RealmModel realm, String userId) {
    log.tracef("removeUserLoginFailure(%s, %s)%s", realm, userId, getShortStackTrace());
    SessionUpdateTask<LoginFailureEntity> removeTask = Tasks.removeSync();
    loginFailuresTx.addTask(new LoginFailureKey(realm.getId(), userId), removeTask);
}
Also used : LoginFailureEntity(org.keycloak.models.sessions.infinispan.entities.LoginFailureEntity) LoginFailureKey(org.keycloak.models.sessions.infinispan.entities.LoginFailureKey)

Example 3 with LoginFailureKey

use of org.keycloak.models.sessions.infinispan.entities.LoginFailureKey in project keycloak by keycloak.

the class InfinispanUserLoginFailureProviderFactory method checkRemoteCaches.

protected void checkRemoteCaches(KeycloakSession session) {
    InfinispanConnectionProvider ispn = session.getProvider(InfinispanConnectionProvider.class);
    Cache<LoginFailureKey, SessionEntityWrapper<LoginFailureEntity>> loginFailuresCache = ispn.getCache(InfinispanConnectionProvider.LOGIN_FAILURE_CACHE_NAME);
    checkRemoteCache(session, loginFailuresCache, (RealmModel realm) -> Time.toMillis(realm.getMaxDeltaTimeSeconds()), SessionTimeouts::getLoginFailuresLifespanMs, SessionTimeouts::getLoginFailuresMaxIdleMs);
}
Also used : RealmModel(org.keycloak.models.RealmModel) SessionTimeouts(org.keycloak.models.sessions.infinispan.util.SessionTimeouts) InfinispanConnectionProvider(org.keycloak.connections.infinispan.InfinispanConnectionProvider) LoginFailureKey(org.keycloak.models.sessions.infinispan.entities.LoginFailureKey) SessionEntityWrapper(org.keycloak.models.sessions.infinispan.changes.SessionEntityWrapper)

Example 4 with LoginFailureKey

use of org.keycloak.models.sessions.infinispan.entities.LoginFailureKey in project keycloak by keycloak.

the class InfinispanUserLoginFailureProviderFactory method create.

@Override
public UserLoginFailureProvider create(KeycloakSession session) {
    InfinispanConnectionProvider connections = session.getProvider(InfinispanConnectionProvider.class);
    Cache<LoginFailureKey, SessionEntityWrapper<LoginFailureEntity>> loginFailures = connections.getCache(InfinispanConnectionProvider.LOGIN_FAILURE_CACHE_NAME);
    return new InfinispanUserLoginFailureProvider(session, remoteCacheInvoker, loginFailures);
}
Also used : InfinispanConnectionProvider(org.keycloak.connections.infinispan.InfinispanConnectionProvider) LoginFailureKey(org.keycloak.models.sessions.infinispan.entities.LoginFailureKey) SessionEntityWrapper(org.keycloak.models.sessions.infinispan.changes.SessionEntityWrapper)

Example 5 with LoginFailureKey

use of org.keycloak.models.sessions.infinispan.entities.LoginFailureKey in project keycloak by keycloak.

the class InfinispanUserLoginFailureProvider method getUserLoginFailure.

@Override
public UserLoginFailureModel getUserLoginFailure(RealmModel realm, String userId) {
    log.tracef("getUserLoginFailure(%s, %s)%s", realm, userId, getShortStackTrace());
    LoginFailureKey key = new LoginFailureKey(realm.getId(), userId);
    LoginFailureEntity entity = getLoginFailureEntity(key);
    return wrap(key, entity);
}
Also used : LoginFailureEntity(org.keycloak.models.sessions.infinispan.entities.LoginFailureEntity) LoginFailureKey(org.keycloak.models.sessions.infinispan.entities.LoginFailureKey)

Aggregations

LoginFailureKey (org.keycloak.models.sessions.infinispan.entities.LoginFailureKey)6 SessionEntityWrapper (org.keycloak.models.sessions.infinispan.changes.SessionEntityWrapper)3 LoginFailureEntity (org.keycloak.models.sessions.infinispan.entities.LoginFailureEntity)3 InfinispanConnectionProvider (org.keycloak.connections.infinispan.InfinispanConnectionProvider)2 Future (java.util.concurrent.Future)1 RealmModel (org.keycloak.models.RealmModel)1 FuturesHelper (org.keycloak.models.sessions.infinispan.util.FuturesHelper)1 SessionTimeouts (org.keycloak.models.sessions.infinispan.util.SessionTimeouts)1