Оглядевшись, мне кажется, что у вас не будет той функциональности, которую предоставляет Keycloak
из коробки. С текущей реализацией Keycloak было бы невозможно использовать:
curl \
-d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" \
-d "phoneNumber=$PhoneNumber" -d "password=$PASSWORD" \
-d "grant_type=password" \
"$KEYCLOAKHOST/auth/realms/$REALM/protocol/openid-connect/token"
поскольку сам Keycloak не проверяет, является ли атрибут пользователя phoneNumber
действительным числом, и не проверяет, является ли он уникальным числом. Это последнее ограничение является фундаментальным по очевидным причинам, поэтому Keycloak обеспечивает уникальность имен пользователей.
Таким образом, вы можете попробовать расширить Keycloak
той функциональностью, которая недавно была реализована в производственной среде. К счастью, разработчик был достаточно любезен, чтобы предоставить эту функциональность для реализации другими, проверьте это сообщение разработчика в блоге redhat с подробным описанием реализации.
Однако, если вы хотите использовать только метод по умолчанию, который вы указали в вопросе, то вы можете просто сказать, что само имя пользователя должно быть мобильный телефон (аналогично подходу WhatsApp), что не так плохо, как кажется, потому что 1) Keycloak обеспечивает уникальность имен пользователей, 2) Keycloak по-прежнему имеет поля имени и фамилии для идентификации пользователей по имени.
Теперь самое сложное — убедиться, что во время регистрации пользователя пользователь действительно вводит действительный номер телефона, а не какую-то случайную строку. Для этого вы можете либо снова расширить keycloak, либо проверить его там. Однако, если вы собираетесь использовать этот корень, вы также можете использовать функцию из сообщения в блоге RedHat. Или управляйте регистрацией пользователя с помощью своего собственного приложения, которое заставит пользователя добавить действительный номер телефона, полагаясь на некоторую функцию безопасности SMS
, и после выполнения проверки приложение само зарегистрирует пользователя на Keycloak с установленным полем имени пользователя. на номер телефона пользователя.
person
dreamcrash
schedule
19.11.2020