Пользователь вошёл у провайдера, но в RX нет соответствующей учётной записи
«Could not authenticate user from ClaimsIdentity. Login has not been found» в логах Directum RX: внешний провайдер входа подтвердил пользователя, но RX не нашёл учётную запись с таким логином. Не совпадает поле, по которому RX ищет учётную запись, или учётной записи нет.
Что это значит
При входе через внешний провайдер RX получает от него набор утверждений о пользователе (claims) и по одному из них ищет свою учётную запись. Если найти не удалось, вход отклоняется с этой ошибкой. Провайдер при этом считает вход успешным, поэтому со стороны Keycloak всё выглядит нормально.
Частые причины: в RX нет учётной записи для этого пользователя; учётная запись есть, но логин записан иначе, чем приходит от провайдера (с доменом и без, другой регистр, почта вместо логина); провайдер передаёт не то утверждение, по которому настроен поиск.
Как проверить
- Какое значение приходит от провайдера: посмотреть содержимое токена пользователя или настройки сопоставления атрибутов у клиента RX в провайдере.
- Учётная запись в RX: есть ли она и как записан логин.
- Не связано ли с конкретной группой пользователей, например заведённых недавно или из другого домена.
Что сделать
- Создать недостающую учётную запись или поправить её логин.
- Настроить провайдер так, чтобы он передавал значение в том виде, в каком логины хранятся в RX.
- Для синхронизации учётных записей из каталога проверить, что новые сотрудники попадают в RX до первого входа.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать