#azure-ad-b2c
#azure-ad-b2c
Вопрос:
Я настраиваю поток ввода пароля в Azure ad b2c с помощью пользовательских политик, но я не могу найти способ использовать имя пользователя вместо электронной почты для восстановления пароля. Я пытался использовать входное имя входа вместо электронной почты в техническом профиле AAD-UserReadUsingEmailAddress, но все равно показывает адрес электронной почты в форме.
<TechnicalProfile Id="AAD-UserReadUsingEmailAddress">
<Metadata>
<Item Key="Operation">Read</Item>
<Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
<Item Key="UserMessageIfClaimsPrincipalDoesNotExist">An account could not be found for the provided user ID.</Item>
</Metadata>
<IncludeInSso>false</IncludeInSso>
<InputClaims>
<InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="signInNames.userName" Required="true" />
</InputClaims>
<OutputClaims>
<!-- Required claims -->
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
<!-- Optional claims -->
<OutputClaim ClaimTypeReferenceId="userPrincipalName" />
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="accountEnabled" />
<OutputClaim ClaimTypeReferenceId="otherMails" />
<OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
</OutputClaims>
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="AssertAccountEnabledIsTrue" />
</OutputClaimsTransformations>
<IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>
Это можно сделать с помощью имени пользователя?
Ответ №1:
Этот технический профиль является реализацией для ЧТЕНИЯ учетной записи. Чего вы пытаетесь достичь, так это в первую очередь отобразить текстовое поле имени пользователя. Чтобы отобразить что-либо на экране, вам необходимо изменить самоподтвержденный технический профиль.
Ключ в том, чтобы изменить режим работы на Имя пользователя в самоассертированном техническом профиле, который запрашивает у пользователя его идентификатор (который из стартового пакета: LocalAccountDiscoveryUsingEmailAddress
), последнее имя ключа setting.operatingMode
, ссылка здесь, установите его на username
. Тогда проверка текстового поля будет для имени пользователя.
Здесь есть полный образец, и вы можете быстро развернуть его по этой ссылке.
Комментарии:
1. Я пробовал это, и в форме появляется ввод имени пользователя, но продолжает появляться ввод электронной почты, есть ли способ сбросить пароль только с помощью имени пользователя?
2. Вы можете, но без проверки соответствующего адреса электронной почты, это было бы дырой в безопасности.
3. Знаете ли вы способ получить адрес электронной почты, связанный с именем пользователя, и отправить код?
4. Это хорошая идея. Да, это возможно, но более сложно, я могу сделать образец для этого.
5. Действительно? это было бы здорово!