Есть ли способ использовать имя пользователя вместо электронной почты в потоке сброса пароля в Azure AD B2C?

#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. Действительно? это было бы здорово!