初始密码更改后,在AzureAD B2C中使用“ forceChangePasswordNextLogin”创建的本地帐户无法再登录

时间:2018-07-17 16:06:37

标签: azure azure-active-directory azure-ad-b2c azure-ad-graph-api

我有一个WebAPI通过AzureAD Graph API在AzureAD B2C租户中创建本地帐户。创建用户后,他们会收到带有临时密码的邀请电子邮件。在Graph API中使用密码配置文件创建了用户,以强制他们在首次登录时更改其临时密码。

user.PasswordProfile = new PasswordProfile();
user.PasswordProfile.Password = GetTemporaryPassword();
user.PasswordProfile.ForceChangePasswordNextLogin = true;

当用户首次登录(通过B2C登录策略)时,会有效地提示您更改其密码,并且在此之前一切正常。

用户登录后,如果先注销然后尝试登录,则身份验证始终会失败,并显示错误消息We don't recognize this user ID or password. Please try again. Forgot your password?
如果他使用其先前的临时密码,则看起来好像身份验证成功,但是要求他再次更改其密码。在这种情况下,Current password与原始临时密码不匹配,而与最新密码不匹配。

我从Graph API确认比第一次登录之前更早,PasswordProfile仍附加到用户。

{
    "odata.type": "Microsoft.DirectoryServices.User",
    "objectType": "User",
    "objectId": "00000000-0000-0000-0000-000000000000",
    ...
    "passwordProfile": {
        "password": null,
        "forceChangePasswordNextLogin": true,
        "enforceChangePasswordPolicy": false
    },
    ...
}

然后,在初始密码更改后,用于强制重置密码的PasswordProfile不再存在。

{
    "odata.type": "Microsoft.DirectoryServices.User",
    "objectType": "User",
    "objectId": "00000000-0000-0000-0000-000000000000",
    ....
    "passwordPolicies": null,
    "passwordProfile": null,
    ....
}

那时,用户登录的唯一解决方案是等待一段时间(5-10分钟),然后才能使用其最新密码登录。

关于造成延迟的原因有什么想法?
更重要的是,如何避免这种延迟以及与之相关的不良用户体验?

1 个答案:

答案 0 :(得分:1)

它用the docs编写并明确说明:

<ul class="options">
  <li><a class="active" href="#" data-target="external">External</a></li>
  <li><a  href="#" data-target="internal">Internal</a></li>
  <li><a  href="#" data-target="both">Both</a></li>
</ul>

因此,如文档所述,总是"passwordProfile": { "password": "P@ssword!", "forceChangePasswordNextLogin": false // always set to false }, "passwordPolicies": "DisablePasswordExpiration" 设置为 false !另外,在始终使用B2C时,请始终forceChangePasswordNextLogin设置为passwordPolicies

在提供的代码示例中,您做出了两(两)件错误的事情:

  1. 您通过

    强制密码更改下一次登录

    DisablePasswordExpiration

  2. 您没有明确禁用密码过期。

使用Azure AD B2C时,在执行操作之前首先阅读文档非常重要。它与普通的Azure AD 不同。一切都在文档中进行了解释。如果您发现某些丢失或错误的信息,请使用每个文档页面底部的反馈表。

下一次登录时强制执行密码重置/更改的功能请求已经logged here。您可以投票使它在优先级列表中更高。

作为最后的选择,如果您真的想实现此目的,则可以使用c ustom policies(REST API来实现检查用户是否应更改密码的逻辑)来

相关问题