Keycloak - запросить у пользователя подтверждение адреса электронной почты через api
Желаемый результат:
Пользователь должен иметь возможность зарегистрироваться, а затем он должен иметь возможность входить в систему через мобильное приложение (если адрес электронной почты не подтвержден), приложение показывает предупреждение о том, что электронная почта не проверена, а некоторые функции приложения отключены.
Что у меня есть:
- собственное мобильное приложение с функциями регистрации и входа пользователей
- сервер API, используемый приложением
- экземпляр 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