Можно ли разрешить пользователю изменять свой номер мобильного телефона в техническом профиле PhoneFactor-InputOrVerify (пользовательский поток B2C)? - PullRequest
1 голос
/ 26 июня 2019

В пользовательских политиках Azure B2C наши требования к бизнес-процессам означают, что нам нужно контролировать:

  1. Пользователь не может заменить номер мобильного телефона, который у нас есть для записи (т. Е. Опыт установки первого пароля), или

  2. Мы представляем номер, который мы записываем для них по умолчанию, но разрешаем пользователю перезаписывать и сохранять этот номер под новым номером (например, во время входа в систему при редактировании профиля).

Вопрос: могу ли я позволить пользователю заменить номер, который мы записали для него, новым номером, возможно, добавив новую кнопку [Предоставить новый номер] в этой серии:

[Отправить код] [Позвонить мне] [Новая кнопка для ввода нового номера] [Отмена]

Экран PhoneFactor-InputOrVerify (изображение)

Приведенный ниже код является небольшим изменением политики с одноименным названием из B2C Custom Policy Starterpack .

Обратите внимание, что в этом примере мы предоставляем значение номера мобильного телефона, хранящееся в свойстве mobile объекта пользователя, как strongAuthenticationNumber. Это связано с тем, что в настоящее время нет способа программно установить номер MFA . (Спасибо за вашу помощь, Крис Паджетт .)

Кроме этого, политика соответствует стартовому пакету.

<ClaimsProvider>
  <DisplayName>PhoneFactor</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="PhoneFactor-InputOrVerify">
      <DisplayName>PhoneFactor</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.PhoneFactorProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ContentDefinitionReferenceId">api.phonefactor</Item>
        <Item Key="ManualPhoneNumberEntryAllowed">true</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
      </CryptographicKeys>
      <InputClaimsTransformations>
        <InputClaimsTransformation ReferenceId="CreateUserIdForMFA" />
      </InputClaimsTransformations>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="userIdForMFA" PartnerClaimType="UserId" />
        <!--InputClaim ClaimTypeReferenceId="strongAuthenticationPhoneNumber" /-->
        <InputClaim ClaimTypeReferenceId="mobile" PartnerClaimType="strongAuthenticationPhoneNumber" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="Verified.strongAuthenticationPhoneNumber" PartnerClaimType="Verified.OfficePhone" />
        <OutputClaim ClaimTypeReferenceId="newPhoneNumberEntered" PartnerClaimType="newPhoneNumberEntered" />
      </OutputClaims>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-MFA" />
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

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

1 Ответ

0 голосов
/ 27 июня 2019

Для этого необходимо создать пользовательский поток, который:

  1. Предлагает конечному пользователю войти в систему с локальной или внешней учетной записью.
  2. Считывает текущий номер телефона для концапользователь из Azure AD.
  3. Предлагает конечному пользователю подтвердить свой текущий номер телефона.
  4. Предлагает конечному пользователю ввести и подтвердить свой новый номер телефона.
  5. Записывает новыйномер телефона конечного пользователя Azure AD.

См. этот пример политики .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...