Keycloak - запросить у пользователя подтверждение адреса электронной почты через api

Желаемый результат:

Пользователь должен иметь возможность зарегистрироваться, а затем он должен иметь возможность входить в систему через мобильное приложение (если адрес электронной почты не подтвержден), приложение показывает предупреждение о том, что электронная почта не проверена, а некоторые функции приложения отключены.

Что у меня есть:

  1. собственное мобильное приложение с функциями регистрации и входа пользователей
  2. сервер API, используемый приложением
  3. экземпляр keycloack

Функциональность регистрации выполняется сервером api, это конфиденциальный клиент keycloak, который может создавать пользователей,вход в систему выполняется мобильным приложением напрямую с помощью пост-вызова keycloak/token конечная точка, которая возвращает токен доступа

все хорошо, теперь у меня есть токен, который может быть использован моим сервером api, и я знаю, что это зарегистрированный пользователь с неподтвержденным адресом электронной почты

Проблема в том, что пользователь не получает приветственное письмо / письмо с подтверждением, но: если пользователь переходит на веб-страницу входа в keycloak и пытается войти в систему с новым пользователем, он получает электронное письмо от Keycloak, но для входа в систему через api электронных писем нет. Есть ли способ решить эту проблему? Я делаю что-то неправильно?

Единственный способ попросить пользователя проверить электронную почту - это запросить действие "Подтвердить электронную почту", но если я сделаю это, пользователь больше не сможет войти в систему с непроверенным адресом электронной почты.

Вход осуществляется с помощью POST к /auth/realms/realm/protocol/openid-connect/token и с {grant_type: 'password', password: 'string', username: 'string'} тело

Вызов PUT /{realm}/users/{id}/send-verify-email похоже, ведет себя так же, как запрос Verify Email к /execute-actions-email

1 ответ

Я знаю, что опаздываю на этот ответ на несколько лет, но для тех, кто придет сюда в будущем, разработчики ответили в этой теме здесь .

Это ограничение конечной точки выполнения действий, и оно использует общий адрес электронной почты. Это не баг, а ограничение

Вот и все. У них есть определенная конечная точка только для отправки электронного письма с подтверждением, но это всего лишь оболочка для конечной точки.execute-actions-email

Другие вопросы по тегам