Search in sources :

Example 6 with UserLoginFailureModel

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

the class UserSessionProviderTest method loginFailures.

@Test
public void loginFailures() {
    testingClient.server().run((KeycloakSession kcSession) -> {
        RealmModel realm = kcSession.realms().getRealmByName("test");
        UserLoginFailureModel failure1 = kcSession.loginFailures().addUserLoginFailure(realm, "user1");
        failure1.incrementFailures();
        UserLoginFailureModel failure2 = kcSession.loginFailures().addUserLoginFailure(realm, "user2");
        failure2.incrementFailures();
        failure2.incrementFailures();
    });
    testingClient.server().run((KeycloakSession kcSession) -> {
        RealmModel realm = kcSession.realms().getRealmByName("test");
        UserLoginFailureModel failure1 = kcSession.loginFailures().getUserLoginFailure(realm, "user1");
        assertEquals(1, failure1.getNumFailures());
        UserLoginFailureModel failure2 = kcSession.loginFailures().getUserLoginFailure(realm, "user2");
        assertEquals(2, failure2.getNumFailures());
        // Add the failure, which already exists
        failure1.incrementFailures();
        assertEquals(2, failure1.getNumFailures());
        failure1 = kcSession.loginFailures().getUserLoginFailure(realm, "user1");
        failure1.clearFailures();
        failure1 = kcSession.loginFailures().getUserLoginFailure(realm, "user1");
        assertEquals(0, failure1.getNumFailures());
    });
    testingClient.server().run((KeycloakSession kcSession) -> {
        RealmModel realm = kcSession.realms().getRealmByName("test");
        kcSession.loginFailures().removeUserLoginFailure(realm, "user1");
    });
    testingClient.server().run((KeycloakSession kcSession) -> {
        RealmModel realm = kcSession.realms().getRealmByName("test");
        assertNull(kcSession.loginFailures().getUserLoginFailure(realm, "user1"));
        kcSession.loginFailures().removeAllUserLoginFailures(realm);
    });
    testingClient.server().run((KeycloakSession kcSession) -> {
        RealmModel realm = kcSession.realms().getRealmByName("test");
        assertNull(kcSession.loginFailures().getUserLoginFailure(realm, "user1"));
        assertNull(kcSession.loginFailures().getUserLoginFailure(realm, "user2"));
    });
}
Also used : RealmModel(org.keycloak.models.RealmModel) UserLoginFailureModel(org.keycloak.models.UserLoginFailureModel) KeycloakSession(org.keycloak.models.KeycloakSession) ModelTest(org.keycloak.testsuite.arquillian.annotation.ModelTest) Test(org.junit.Test) AbstractTestRealmKeycloakTest(org.keycloak.testsuite.AbstractTestRealmKeycloakTest)

Example 7 with UserLoginFailureModel

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

the class DefaultBruteForceProtector method success.

private void success(KeycloakSession session, LoginEvent event) {
    String userId = event.userId;
    UserLoginFailureModel user = getUserModel(session, event);
    if (user == null)
        return;
    if (logger.isDebugEnabled()) {
        UserModel model = session.users().getUserById(getRealmModel(session, event), userId);
        logger.debugv("user {0} successfully logged in, clearing all failures", model.getUsername());
    }
    user.clearFailures();
}
Also used : UserModel(org.keycloak.models.UserModel) UserLoginFailureModel(org.keycloak.models.UserLoginFailureModel)

Example 8 with UserLoginFailureModel

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

the class DefaultBruteForceProtector method getUserModel.

protected UserLoginFailureModel getUserModel(KeycloakSession session, LoginEvent event) {
    RealmModel realm = getRealmModel(session, event);
    if (realm == null)
        return null;
    UserLoginFailureModel user = session.loginFailures().getUserLoginFailure(realm, event.userId);
    if (user == null)
        return null;
    return user;
}
Also used : RealmModel(org.keycloak.models.RealmModel) UserLoginFailureModel(org.keycloak.models.UserLoginFailureModel)

Example 9 with UserLoginFailureModel

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

the class BruteForceCrossDCTest method addUserLoginFailure.

// resolution on Wildfly: make deployment available on both dc0_1 and dc1_1, see @Deployment methods
private void addUserLoginFailure(KeycloakTestingClient testingClient) throws URISyntaxException, IOException {
    testingClient.server().run(session -> {
        RealmModel realm = session.realms().getRealmByName(REALM_NAME);
        UserLoginFailureModel loginFailure = session.loginFailures().addUserLoginFailure(realm, "login-test-1");
        loginFailure.incrementFailures();
    });
}
Also used : RealmModel(org.keycloak.models.RealmModel) UserLoginFailureModel(org.keycloak.models.UserLoginFailureModel)

Aggregations

UserLoginFailureModel (org.keycloak.models.UserLoginFailureModel)9 RealmModel (org.keycloak.models.RealmModel)4 UserModel (org.keycloak.models.UserModel)4 Path (javax.ws.rs.Path)2 HashMap (java.util.HashMap)1 BadRequestException (javax.ws.rs.BadRequestException)1 Consumes (javax.ws.rs.Consumes)1 DELETE (javax.ws.rs.DELETE)1 GET (javax.ws.rs.GET)1 NotFoundException (javax.ws.rs.NotFoundException)1 PUT (javax.ws.rs.PUT)1 Produces (javax.ws.rs.Produces)1 WebApplicationException (javax.ws.rs.WebApplicationException)1 Response (javax.ws.rs.core.Response)1 NoCache (org.jboss.resteasy.annotations.cache.NoCache)1 Test (org.junit.Test)1 EmailException (org.keycloak.email.EmailException)1 KeycloakSession (org.keycloak.models.KeycloakSession)1 ModelDuplicateException (org.keycloak.models.ModelDuplicateException)1 ModelException (org.keycloak.models.ModelException)1