Примеры запросов к API для разблокировки пользователя

Получение токена

Запрос:

curl --location 'http://localhost:8080/realms/demo-realm/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=test_unlocking_client' \
--data-urlencode 'client_secret=7J8QxRMSisLAZz5jktTXhbOvSuNGkBk7' \
--data-urlencode 'grant_type=client_credentials'

Ответ:

{
    "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJmRVpJc0t3LV9xSG90X2w0anNYS3FjMUNjWGs4dkp1S2FPdjh1TThvNlZ3In0.eyJleHAiOjE2ODcyNTc3OTMsImlhdCI6MTY4NzI1NzQ5MywianRpIjoiZDU4MTQzNWEtMjE4Ni00ZjdkLWE0MzgtYTNiYmM2NDI0ZGIyIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL3JlYWxtcy9tZmEtdGVzdC1yZWFsbS1hbGxvdy1uby1tZmEiLCJzdWIiOiI0ZWQzZjczMy0wMDhiLTRhMmQtYmNhNS01Y2YxODk0YjAwNDgiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJ0ZXN0X3VubG9ja2luZ19jbGllbnQiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIi8qIl0sInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJvZmZsaW5lX2FjY2VzcyIsImRlZmF1bHQtcm9sZXMtbWZhLXRlc3QtcmVhbG0tYWxsb3ctbm8tbWZhIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiY2xpZW50SWQiOiJ0ZXN0X3VubG9ja2luZ19jbGllbnQiLCJjbGllbnRIb3N0IjoiMDowOjA6MDowOjA6MDoxIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LXRlc3RfdW5sb2NraW5nX2NsaWVudCIsImNsaWVudEFkZHJlc3MiOiIwOjA6MDowOjA6MDowOjEifQ.gF_aMJHKLrPHuERKec_1t268b8HascT3S-L8wVjVJM0W2QIL_--NCkpE51zl2uzoite5icLUa_kyYvfzqhwhx9FdB678ZXq5-D05oebFFrNmQ4LzIA7I7Gf2ZWQxS3JBHyYlP4OK-1fQPYELVBQsQVxpWqzuB8UqwKVmwI6XkI1MA70CkaK__44_g9OOAgr8cHiv-AnMGGoNkad5R0lG2RZD74vW1nTmSXEIh9zv4wFW0Fw2hj8IsdMfRsTzab7x4eWhnrvvXcaIHRgy3hBUFvL_aVjLggEK9w9OdWQ5e61da98bROUrayfza3rhmbIe0Eu9y1Mk-sb_8FEVHvgpOg",
    "expires_in": 300,
    "refresh_expires_in": 0,
    "token_type": "Bearer",
    "not-before-policy": 0,
    "scope": "email profile"
}

Получение списка пользователей указанной области безопасности

Предварительное условие: пользователь test_user заблокирован.

Запрос:

curl --location 'http://localhost:8080/admin/realms/demo-realm/users' \
--header 'Authorization: Bearer {your-token}

Ответ:

[
    {
        "id": "f5219b26-ac73-47ef-8c3c-888c6e0e4c49",
        "createdTimestamp": 1687175144017,
        "username": "test_user",
        "enabled": false,
        "totp": false,
        "emailVerified": false,
        "firstName": "",
        "lastName": "",
        "disableableCredentialTypes": [],
        "requiredActions": [],
        "notBefore": 0,
        "access": {
            "manageGroupMembership": true,
            "view": true,
            "mapRoles": true,
            "impersonate": false,
            "manage": true
        }
    }
]

Разблокировка пользователя

Предварительное условие: пользователь test_user заблокирован.

Запрос:

curl --location --request PUT 'http://localhost:8080/admin/realms/demo-realm/users/f5219b26-ac73-47ef-8c3c-888c6e0e4c49' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {your-token}
--data '{
    "enabled": true
}'

Ответ: 204 No Content.

Запрос на состояние временной блокировки пользователя

Предварительное условие: пользователь был заблокирован в результате брутфорс-атаки.

Запрос:

curl --location 'http://localhost:8080/admin/realms/demo-realm/attack-detection/brute-force/users/f5219b26-ac73-47ef-8c3c-888c6e0e4c49' \
--header 'Authorization: Bearer {your-token}

Ответ:

{
"numFailures": 3,
"disabled": true,
"lastIPFailure": "0:0:0:0:0:0:0:1",
"lastFailure": 1687175896732
}

В случае разблокировки пользователя данные по атакам пользователя будут сброшены:

{
    "numFailures": 0,
    "disabled": false,
    "lastFailure": 0
}