Как сделать пароль сброса пользовательского потока входа при принудительной смене пароля - PullRequest
0 голосов
/ 25 марта 2019

Я создал пользовательский поток входа, используя стартовый пакет (только с изменениями для моего рекламодателя). Я создаю нового пользователя в Ad с временным паролем, который пользователь вынужден изменить при первом входе в систему.

Когда пользователь входит в систему в первый раз, отображается сообщение об ошибке, что имя пользователя / пароль неверны, вместо перехода на страницу сброса пароля.

Какие изменения необходимо внести в поток пользовательского входа, чтобы он отображал страницу сброса пароля?

Ответы [ 3 ]

0 голосов
/ 25 марта 2019

Если вы можете создать нового пользователя со случайным паролем, используя API-интерфейс Azure AD Graph , а не с помощью портала Azure, то вы можете реализовать пользовательскую политику, которая инструктирует нового пользователя сбрасывать случайное числопароль.

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

Чтобы задать для настраиваемого атрибута для нового пользователя значение true:

{
  "accountEnabled": true,
  "creationType": "LocalAccount",
  "displayName": "Alex Wu",
  "passwordProfile": {
    "password": "Test1234",
    "forceChangePasswordNextLogin": false
  },
  "signInNames": [
    {
      "type": "emailAddress",
      "value": "AlexW@example.com"
    }
  ],
  "extension_<b2cExtensionApplicationObjectIdWithoutHyphens>_ForceChangePasswordNextSignIn": true
}

Для проверки настраиваемого атрибута во время знака-в потоке:

  1. Объявите тип заявки, представляющий пользовательский атрибут.
<ClaimType Id="extension_ForceChangePasswordNextSignIn">
  <DisplayName>Force Change Password Next Sign-In</DisplayName>
  <DataType>boolean</DataType>
</ClaimType>
Объявление и AssertBooleanClaimIsEqualToValue преобразование утверждений , чтобы гарантировать, что для пользовательского атрибута не установлено значение true (т. Е. Новому пользователю не нужно сбрасывать на случайный пароль).
<ClaimsTransformation Id="EnsureForceChangePasswordNextSignInIsFalse" TransformationMethod="AssertBooleanClaimIsEqualToValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="extension_ForceChangePasswordNextSignIn" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="valueToCompareTo" DataType="boolean" Value="false" />
  </InputParameters>
</ClaimsTransformation>
Вызывает EnsureForceChangePasswordNextSignInIsFalse запрашивает преобразования из копии технического профиля AAD-UserReadUsingEmailAddress , чтобы проверить, что настраиваемый атрибут не установлен в true.
<TechnicalProfile Id="AAD-UserReadUsingSignInName-EnsureForceChangePasswordNextSignInIsFalse">
  ...
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="signInNames" Required="true" />
  </InputClaims>
  <OutputClaims>
    ...
    <OutputClaim ClaimTypeReferenceId="extension_ForceChangePasswordNextSignIn" />
  </OutputClaims>
  <OutputClaimsTransformations>
    ...
    <OutputClaimsTransformation ReferenceId="EnsureForceChangePasswordNextSignInIsFalse" />
  </OutputClaimsTransformations>
</TechnicalProfile>
Вызвать AAD-UserReadUsingSignInName-EnsureForceChangePasswordNextSignInIsFalse из технического профиля SelfAsserted-LocalAccountSignin-Email , чтобы показать сообщение об ошибке, если для пользовательского атрибута установлено значение true (новый пользователь должен сбросить случайный пароль).
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
  ...
  <Metadata>
    ...
    <Item Key="UserMessageIfClaimsTransformationBooleanValueIsNotEqual">Whoops, you have to change your admin-created password, so please click 'Forgot your password?'.</Item>
  </Metadata>
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="AAD-UserReadUsingSignInName-EnsureForceChangePasswordNextSignInIsFalse" />
    <ValidationTechnicalProfile ReferenceId="login-NonInteractive" />
  </ValidationTechnicalProfiles>
  ...
</TechnicalProfile>
0 голосов
/ 30 мая 2019

MS предоставила пример, который описывает, как выполнить принудительный сброс пароля.См. Здесь .

. Это работает, только если вы создаете пользователей программно.Следует обратить внимание на то, что при создании пользователей необходимо убедиться, что для passwordProfile.ForceChangePasswordNextLogin установлено значение false.

0 голосов
/ 25 марта 2019

В потоке входа B2C вы не можете использовать нового созданного пользователя с временным паролем. Для потока он не может перенаправить на страницу смены пароля пользователя.

...