Поделиться через


Настройка смены пароля в пользовательских политиках в Azure Active Directory B2C

Для начала с помощью селектора Choose a policy type (Выбрать тип политики) выберите тип пользовательской политики. Azure Active Directory B2C предлагает два метода определения способа взаимодействия пользователей с вашими приложениями: с помощью предопределенных потоков пользователей или полностью настраиваемых пользовательских политик. Действия, которые необходимо выполнить, отличаются для каждого метода.

Azure Active Directory B2C (Azure AD B2C) можно настроить так, чтобы пользователи, выполнившие вход с локальной учетной записью, могли изменять свои пароли без дополнительных подтверждений по электронной почте.

Процесс смены пароля включает следующие шаги:

  1. Пользователь входит в локальную учетную запись. Если его сеанс еще активен, AAD B2C подтверждает вход пользователя и переходит к следующему шагу.

  2. В поле Старый пароль пользователь проверяет старый пароль. В поле Новый пароль пользователь вводит и подтверждает новый пароль.

    Screenshot that shows two numbered dialogs for making a password change.

Совет

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

Эта возможность доступна только для пользовательских политик. Чтобы ознакомиться с этапами установки, в предыдущем селекторе выберите Настраиваемая политика.

Необходимые компоненты

Добавление элементов

  1. Откройте файл TrustFrameworkExtensions.xml. Добавьте следующий элемент ClaimType с идентификатором oldPassword в элемент ClaimsSchema:

    <BuildingBlocks>
      <ClaimsSchema>
        <ClaimType Id="oldPassword">
          <DisplayName>Old Password</DisplayName>
          <DataType>string</DataType>
          <UserHelpText>Enter your old password</UserHelpText>
          <UserInputType>Password</UserInputType>
        </ClaimType>
      </ClaimsSchema>
    </BuildingBlocks>
    
  2. Элемент ClaimsProvider содержит технический профиль, с помощью которого выполняется проверка подлинности пользователя. Добавьте следующие поставщики утверждений в элемент ClaimsProviders.

    <ClaimsProviders>
      <ClaimsProvider>
        <DisplayName>Local Account SignIn</DisplayName>
        <TechnicalProfiles>
          <TechnicalProfile Id="login-NonInteractive-PasswordChange">
            <DisplayName>Local Account SignIn</DisplayName>
            <InputClaims>
              <InputClaim ClaimTypeReferenceId="oldPassword" PartnerClaimType="password" Required="true" />
              </InputClaims>
            <IncludeTechnicalProfile ReferenceId="login-NonInteractive" />
          </TechnicalProfile>
        </TechnicalProfiles>
      </ClaimsProvider>
      <ClaimsProvider>
        <DisplayName>Local Account Password Change</DisplayName>
        <TechnicalProfiles>
          <TechnicalProfile Id="LocalAccountWritePasswordChangeUsingObjectId">
            <DisplayName>Change password (username)</DisplayName>
            <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
            <Metadata>
              <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item>
            </Metadata>
            <InputClaims>
              <InputClaim ClaimTypeReferenceId="objectId" />
            </InputClaims>
            <OutputClaims>
              <OutputClaim ClaimTypeReferenceId="oldPassword" Required="true" />
              <OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
              <OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
            </OutputClaims>
            <ValidationTechnicalProfiles>
              <ValidationTechnicalProfile ReferenceId="login-NonInteractive-PasswordChange" />
              <ValidationTechnicalProfile ReferenceId="AAD-UserWritePasswordUsingObjectId" />
            </ValidationTechnicalProfiles>
          </TechnicalProfile>
        </TechnicalProfiles>
      </ClaimsProvider>
    </ClaimsProviders>
    
  3. Элемент UserJourney определяет путь взаимодействия пользователя с приложением. Добавьте элемент UserJourneys, если он не существует. Присвойте UserJourney идентификатор PasswordChange.

    <UserJourneys>
      <UserJourney Id="PasswordChange">
        <OrchestrationSteps>
          <OrchestrationStep Order="1" Type="ClaimsProviderSelection" ContentDefinitionReferenceId="api.signuporsignin">
            <ClaimsProviderSelections>
              <ClaimsProviderSelection TargetClaimsExchangeId="LocalAccountSigninEmailExchange" />
            </ClaimsProviderSelections>
          </OrchestrationStep>
          <OrchestrationStep Order="2" Type="ClaimsExchange">
            <ClaimsExchanges>
              <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
            </ClaimsExchanges>
          </OrchestrationStep>
          <OrchestrationStep Order="3" Type="ClaimsExchange">
            <ClaimsExchanges>
              <ClaimsExchange Id="NewCredentials" TechnicalProfileReferenceId="LocalAccountWritePasswordChangeUsingObjectId" />
            </ClaimsExchanges>
          </OrchestrationStep>
          <OrchestrationStep Order="4" Type="ClaimsExchange">
            <ClaimsExchanges>
              <ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
            </ClaimsExchanges>
          </OrchestrationStep>
          <OrchestrationStep Order="5" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
        </OrchestrationSteps>
        <ClientDefinition ReferenceId="DefaultWeb" />
      </UserJourney>
    </UserJourneys>
    
  4. Сохраните файл политики TrustFrameworkExtensions.xml.

  5. Скопируйте файл ProfileEdit.xml, который был скачан вместе с начальным пакетом, и присвойте ему имя ProfileEditPasswordChange.xml.

  6. Откройте новый файл и задайте для атрибута PolicyId уникальное значение. Это значение определяет имя вашей политики. Например, B2C_1A_profile_edit_password_change.

  7. Задайте для атрибута ReferenceId в DefaultUserJourney идентификатор созданного пути взаимодействия пользователя. Например, PasswordChange.

  8. Сохранение изменений.

Отправка и тестирование политики

  1. Войдите на портал Azure.
  2. Если у вас есть доступ к нескольким клиентам, выберите значок Параметры в верхнем меню, чтобы переключиться на клиент Azure AD B2C из меню каталогов и подписок.
  3. Выберите Все службы в левом верхнем углу окна портала Azure, а затем найдите и выберите Azure AD B2C.
  4. Выберите Инфраструктура процедур идентификации.
  5. На странице Настраиваемые политики выберите Отправить политику.
  6. Выберите Перезаписать политику, если она существует, а затем найдите и выберите файл TrustFrameworkExtensions.xml.
  7. Выберите Отправить.
  8. Повторите шаги с 5 по 7 для файла проверяющей стороны, например ProfileEditPasswordChange.xml.

Запуск политики

  1. Откройте измененную политику. Например, B2C_1A_profile_edit_password_change.
  2. Для параметра Приложение выберите ранее зарегистрированное приложение. Чтобы маркер отображался, URL-адрес ответа должен быть следующим: https://jwt.ms.
  3. Выберите Запустить сейчас. На новой открывшейся вкладке удалите строку "&prompt=login" из URL-адреса и обновите вкладку. Затем войдите, используя созданную ранее учетную запись. В диалоговом окне смены пароля можно изменить пароль.

Следующие шаги