在AzureAD B2C中创建的本地帐户;forceChangePasswordNextLogin“;初始密码更改后无法再登录
我有一个WebAPI,通过AzureAD Graph API在AzureAD B2C租户中创建本地帐户。创建用户时,他们会收到一封带有临时密码的邀请电子邮件。用户在Graph API中创建,并带有密码配置文件,以强制他们在首次登录时更改临时密码在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
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代码>
作为最后的手段,如果您真的想实现这个,那么可以使用(RESTAPI实现逻辑来检查用户是否应该更改密码) 谢谢你的反馈。在实现该功能时,我们在文档中遗漏了有关
或echangepasswordnextlogin
的信息。还感谢passwordPolicies
这件事。虽然我们将API创建的用户与策略创建的用户进行了相同的比较,但显然我们忽略了这一点!