用户流“ Sign in v2”的AD B2C forceChangePasswordNextLogin不会启动密码重置,并且会阻止成功登录

Tho*_* D. 6 active-directory azure azure-active-directory azure-ad-b2c

我正在使用图形客户端API在Azure AD B2C中创建新用户。我发送给api的json如下所示:

{
    "creationType": "LocalAccount",
    "passwordProfile": {
        "password": "a:898;keJPpN/69X",
        "forceChangePasswordNextLogin": true
    },
    "passwordPolicies": "DisablePasswordExpiration",
    "objectId": null,
    "accountEnabled": true,
    "displayName": "John Doe",
    "mailNickname": "john.doe",
    "signInNames": [
        {
            "type": "emailAddress",
            "value": "john.doe@provider.com"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

然后可以正确创建用户。但是,一旦我尝试使用流“ Sign in v2”使用新创建的用户登录,就会收到以下错误消息:Invalid username or password. 查看登录尝试,失败的尝试都失败了,

Status: Interrupted
Sign-in error code: 50055
Failure reason: Invalid password, entered expired password.
Run Code Online (Sandbox Code Playgroud)

通过单击“忘记密码?”来启动“密码重置v2”流程。确实会触发带有电子邮件确认的密码重设流程。输入发送的确认代码并设置新密码后,登录将按预期工作。

如果设置了"forceChangePasswordNextLogin" : false,则第一次登录将按预期进行。但是,在这种情况下,不会迫使用户更改其一次性密码。因此,这实际上不是一个选择。也很有趣:使用“登录”流(不使用v2)时,一切都按预期工作,并且用户在第一次登录时被迫更改密码。但是,由于该流程不支持自定义样式,因此也不是一种选择。

我必须怎么做才能获得“ Sign in v2”流,以便在用户首次登录时正确触发密码更改?

Chr*_*ett 6

除了将passwordProfile.forceChangePasswordNextLogin设置为true,您还可以创建自定义属性(例如ForceResetPasswordNextLogin),true在创建本地帐户时将其设置为,然后将其作为应用程序声明从登录策略发布到您的 B2C 应用程序。登录后,如果设置为true,则您的 B2C 应用程序可以启动密码重置策略。密码重置后,您的 B2C 应用程序可以将其设置为false.

否则,您可以考虑自定义策略初始试用包装,包括密码更改步骤

  • 嗨@ThomasD。这是一个错误或功能。:) 登录策略通过向 Azure AD B2C 目录发送 `grant_type=password` 请求来验证用户凭据。如果 **forceChangePasswordNextLogin** 属性设置为 `true`,则此请求将返回“user_password_expired”错误。登录策略通过显示“无效的电子邮件地址/用户或密码”错误来处理此错误。 (4认同)
  • 感谢您的意见,我将研究您提供的选项。我希望我只是使用了错误的配置或类似的东西,但对我来说看起来越来越像一个错误。 (2认同)

Tho*_* D. 2

Forced password reset现在在用户流的属性中 调用了一个选项:在此输入图像描述

正如提示消息所示,勾选此复选框后,用户可以使用过期密码登录。一旦他们实际登录,用户就被迫更改密码。如果未选中此复选框,则行为如Chri 的回答中所述。