Событие неудачного входа в Keycloak
События Keycloak type="LOGIN_ERROR" с error="cookie_not_found", "invalid_user_credentials", "user_not_found", "user_temporarily_disabled", "expired_code": что значит каждый код и что проверить. cookie_not_found часто связан с прокси и вкладками браузера.
Что это значит
Keycloak пишет событие LOGIN_ERROR на каждую неудачную попытку входа, а в поле error указывает причину:
| Код | Что значит |
|---|---|
invalid_user_credentials |
неверный пароль |
user_not_found |
нет такого пользователя ни в Keycloak, ни в подключённом каталоге |
user_temporarily_disabled |
учётная запись временно заблокирована защитой от подбора пароля |
user_disabled |
учётная запись отключена |
cookie_not_found |
браузер не прислал cookie сеанса входа |
expired_code |
форма входа устарела: страницу открыли давно |
invalid_redirect_uri |
приложение просит вернуть пользователя на адрес, не разрешённый в настройках клиента |
cookie_not_found встречается чаще остальных и озадачивает больше всех. Keycloak ставит cookie, когда показывает форму входа, и ждёт её обратно при отправке формы. Её нет, если форму открыли в одной вкладке, а вошли в другой, если браузер заблокировал cookie, или если Keycloak за прокси выдаёт cookie без Secure (Non-secure context detected) и браузер их не отправляет.
Как проверить
- Код ошибки, клиент (
clientId) и адрес в событии. - Для
user_temporarily_disabledпосмотреть настройки защиты от подбора в realm и заблокированных пользователей. - Для массового
cookie_not_foundпроверить, что Keycloak знает про HTTPS снаружи:issuerв/.well-known/openid-configurationначинается сhttps://.
Что сделать
- Единичные
invalid_user_credentialsиcookie_not_foundсчитать нормой. - Всплеск
invalid_user_credentialsиuser_not_foundс одного адреса похож на подбор пароля: проверить защиту и источник. - Массовый
cookie_not_foundразбирать как ошибку настройки прокси или адреса Keycloak.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать