Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在AzureAD B2C中创建的本地帐户;forceChangePasswordNextLogin“;初始密码更改后无法再登录_Azure_Azure Active Directory_Azure Ad B2c_Azure Ad Graph Api - Fatal编程技术网

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

在AzureAD B2C中创建的本地帐户;forceChangePasswordNextLogin“;初始密码更改后无法再登录,azure,azure-active-directory,azure-ad-b2c,azure-ad-graph-api,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.Forc

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

user.PasswordProfile = new PasswordProfile();
user.PasswordProfile.Password = GetTemporaryPassword();
user.PasswordProfile.ForceChangePasswordNextLogin = true;
当用户第一次登录(通过B2C登录策略)时,系统会有效地提示用户更改密码,到目前为止一切正常

一旦用户登录,如果他注销后立即尝试登录,身份验证总是失败,并显示错误消息
,我们无法识别此用户ID或密码。请再试一次。忘记密码了?

如果他使用了以前的临时密码,那么看起来身份验证成功了,但他被要求再次更改密码。在该视图中,
当前密码
与原始临时密码不匹配,而是与最新密码匹配

我从Graph API确认,与第一次登录之前相比,
PasswordProfile
仍然附加到用户

{
    "odata.type": "Microsoft.DirectoryServices.User",
    "objectType": "User",
    "objectId": "00000000-0000-0000-0000-000000000000",
    ...
    "passwordProfile": {
        "password": null,
        "forceChangePasswordNextLogin": true,
        "enforceChangePasswordPolicy": false
    },
    ...
}
然后,在初始密码更改之后,强制密码重置的
密码配置文件
不再在此

{
    "odata.type": "Microsoft.DirectoryServices.User",
    "objectType": "User",
    "objectId": "00000000-0000-0000-0000-000000000000",
    ....
    "passwordPolicies": null,
    "passwordProfile": null,
    ....
}
此时,用户能够登录的唯一解决方案是等待一段时间(5-10分钟),然后才能使用其最新密码登录

你知道这次延误的原因吗?
更重要的是,如何避免这种延迟以及与之相关的糟糕的用户体验?

它以书面形式编写并明确解释:

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

在提供的代码示例中,您犯了两(2)个错误:

  • 您可以通过以下方式强制更改下一次登录的密码:

    user.PasswordProfile.ForceChangePasswordNextLogin=true

  • 您没有显式禁用密码过期

  • 使用Azure AD B2C时,在采取行动之前,首先阅读文档非常重要。它与普通的Azure广告不同。所有内容都在文档中解释。如果您看到一些缺失或错误的信息,请使用每个文档页面底部的反馈表

    下一次登录时强制密码重置/更改的功能请求已发出。你们可以投你们的一票,使它在优先权列表中处于更高的位置


    作为最后的手段,如果您真的想实现这个,那么可以使用(RESTAPI实现逻辑来检查用户是否应该更改密码)

    谢谢你的反馈。在实现该功能时,我们在文档中遗漏了有关
    或echangepasswordnextlogin
    的信息。还感谢
    passwordPolicies
    这件事。虽然我们将API创建的用户与策略创建的用户进行了相同的比较,但显然我们忽略了这一点!