Search in sources :

Example 1 with UserLoginFailureProvider

use of org.keycloak.models.UserLoginFailureProvider in project keycloak by keycloak.

the class InfinispanUserLoginFailureProviderFactory method postInit.

@Override
public void postInit(final KeycloakSessionFactory factory) {
    this.remoteCacheInvoker = new RemoteCacheInvoker();
    factory.register(event -> {
        if (event instanceof PostMigrationEvent) {
            KeycloakModelUtils.runJobInTransaction(factory, (KeycloakSession session) -> {
                checkRemoteCaches(session);
                registerClusterListeners(session);
                loadLoginFailuresFromRemoteCaches(session);
            });
        } else if (event instanceof UserModel.UserRemovedEvent) {
            UserModel.UserRemovedEvent userRemovedEvent = (UserModel.UserRemovedEvent) event;
            UserLoginFailureProvider provider = userRemovedEvent.getKeycloakSession().getProvider(UserLoginFailureProvider.class, getId());
            provider.removeUserLoginFailure(userRemovedEvent.getRealm(), userRemovedEvent.getUser().getId());
        }
    });
}
Also used : UserModel(org.keycloak.models.UserModel) RemoteCacheInvoker(org.keycloak.models.sessions.infinispan.remotestore.RemoteCacheInvoker) KeycloakSession(org.keycloak.models.KeycloakSession) UserLoginFailureProvider(org.keycloak.models.UserLoginFailureProvider) PostMigrationEvent(org.keycloak.models.utils.PostMigrationEvent)

Example 2 with UserLoginFailureProvider

use of org.keycloak.models.UserLoginFailureProvider in project keycloak by keycloak.

the class InfinispanUserLoginFailureProviderFactory method registerClusterListeners.

protected void registerClusterListeners(KeycloakSession session) {
    KeycloakSessionFactory sessionFactory = session.getKeycloakSessionFactory();
    ClusterProvider cluster = session.getProvider(ClusterProvider.class);
    cluster.registerListener(REALM_REMOVED_SESSION_EVENT, new AbstractUserSessionClusterListener<RealmRemovedSessionEvent, UserLoginFailureProvider>(sessionFactory, UserLoginFailureProvider.class) {

        @Override
        protected void eventReceived(KeycloakSession session, UserLoginFailureProvider provider, RealmRemovedSessionEvent sessionEvent) {
            if (provider instanceof InfinispanUserLoginFailureProvider) {
                ((InfinispanUserLoginFailureProvider) provider).removeAllLocalUserLoginFailuresEvent(sessionEvent.getRealmId());
            }
        }
    });
    cluster.registerListener(REMOVE_ALL_LOGIN_FAILURES_EVENT, new AbstractUserSessionClusterListener<RemoveAllUserLoginFailuresEvent, UserLoginFailureProvider>(sessionFactory, UserLoginFailureProvider.class) {

        @Override
        protected void eventReceived(KeycloakSession session, UserLoginFailureProvider provider, RemoveAllUserLoginFailuresEvent sessionEvent) {
            if (provider instanceof InfinispanUserLoginFailureProvider) {
                ((InfinispanUserLoginFailureProvider) provider).removeAllLocalUserLoginFailuresEvent(sessionEvent.getRealmId());
            }
        }
    });
    log.debug("Registered cluster listeners");
}
Also used : RemoveAllUserLoginFailuresEvent(org.keycloak.models.sessions.infinispan.events.RemoveAllUserLoginFailuresEvent) ClusterProvider(org.keycloak.cluster.ClusterProvider) KeycloakSession(org.keycloak.models.KeycloakSession) KeycloakSessionFactory(org.keycloak.models.KeycloakSessionFactory) RealmRemovedSessionEvent(org.keycloak.models.sessions.infinispan.events.RealmRemovedSessionEvent) UserLoginFailureProvider(org.keycloak.models.UserLoginFailureProvider)

Aggregations

KeycloakSession (org.keycloak.models.KeycloakSession)2 UserLoginFailureProvider (org.keycloak.models.UserLoginFailureProvider)2 ClusterProvider (org.keycloak.cluster.ClusterProvider)1 KeycloakSessionFactory (org.keycloak.models.KeycloakSessionFactory)1 UserModel (org.keycloak.models.UserModel)1 RealmRemovedSessionEvent (org.keycloak.models.sessions.infinispan.events.RealmRemovedSessionEvent)1 RemoveAllUserLoginFailuresEvent (org.keycloak.models.sessions.infinispan.events.RemoveAllUserLoginFailuresEvent)1 RemoteCacheInvoker (org.keycloak.models.sessions.infinispan.remotestore.RemoteCacheInvoker)1 PostMigrationEvent (org.keycloak.models.utils.PostMigrationEvent)1