如何在强制更改密码时创建自定义登录流程重置密码

时间:2019-03-24 22:13:30

标签: azure-ad-b2c identity-experience-framework

我已经使用入门包创建了自定义登录流程(仅对我的广告租户进行了更改)。我在Ad中创建了一个新用户,使用的临时密码是该用户在首次登录时被迫更改的临时密码。

当用户首次登录时,将显示一个错误,提示用户名/密码无效,而不是进入密码重设页面。

我需要对“自定义”登录流程进行哪些更改,以使其显示密码重置页面?

3 个答案:

答案 0 :(得分:0)

在B2C登录流程中,您不能使用具有临时密码的新创建用户。对于该流,它无法重定向到用户更改密码页面。

答案 1 :(得分:0)

如果可以create a new user with a random password using the Azure AD Graph API(而不使用Azure门户),则可以实施自定义策略,指示新用户重置随机密码。

要实施此操作,您必须create a custom attribute,例如 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>
  1. 声明an AssertBooleanClaimIsEqualToValue claims transformation以确保自定义属性未设置为true(即新用户不必重置为随机密码)。
<ClaimsTransformation Id="EnsureForceChangePasswordNextSignInIsFalse" TransformationMethod="AssertBooleanClaimIsEqualToValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="extension_ForceChangePasswordNextSignIn" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="valueToCompareTo" DataType="boolean" Value="false" />
  </InputParameters>
</ClaimsTransformation>
  1. AAD-UserReadUsingEmailAddress 技术配置文件的副本中调用 EnsureForceChangePasswordNextSignInIsFalse 声明转换,以测试自定义属性未设置为true
  2. li>
<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>
  1. 如果您将自定义属性设置为{{1, }}(即新用户必须重置为随机密码)。
true

答案 2 :(得分:0)

MS提供了一个示例,描述了如何执行强制密码重置。参见Here

这仅在您以编程方式创建用户时才有效。需要注意的一点是,创建用户时应确保将passwordProfile.ForceChangePasswordNextLogin设置为false。