我试图了解如何使用Azure AD B2C密码重置。
似乎有多种方法可以处理密码重置。这些有什么区别?两者之间有价格差异吗?是Azure AD的某些功能,还是Azure AD B2C的某些功能?为什么下面的方法3似乎不起作用?
通过Azure B2C用户流(策略)。
通过Azure Active Directory自助服务密码重置。可通过https://passwordreset.microsoftonline.com访问。这允许用户通过存储在其个人资料中的任何电子邮件地址重置密码。
重置用户配置文件上的密码按钮。这提供了一个临时密码,但是该临时密码似乎不起作用。
答案 0 :(得分:1)
以我的经验为例,假设您的B2C租户名为contoso.onmicrosoft.com或仅仅是contoso.com:
根据我的经验,唯一真实的方法是使用用户流(策略)。其他两个仅适用于特定于相关B2C目录的帐户。
您必须考虑在B2C方案中,用户的电子邮件地址也可能属于完全不同的目录(经典B2B)中的“正常” AAD用户。这两个租户/目录彼此之间并不真正了解。即使它不是AAD帐户,它也可能属于多个B2C租户中的用户。每个都有一个单独的密码。
答案 1 :(得分:1)
当前,在一般情况下,我们仅支持两种方法来重置Azure AD B2C用户的密码:
具有 Azure AD B2C密码重置策略/用户流的自助重置密码(SSPR)。
管理员帮助用户使用 Azure AD Graph API :https://docs.microsoft.com/en-us/previous-versions/azure/ad/graph/api/users-operations#reset-a-users-password--
回答您的问题:
两者之间有什么区别?有价格差吗 在这些之间?是Azure AD的一些功能,而有些是 AD B2C的功能是什么?
密码重置策略/用户流程适用于AAD B2C用户。 您可以直接使用它。 AAD B2C用户可以使用此密码自行重置密码。这也是一种SSPR。
Azure Active Directory自助服务密码重置。通常,它适用于企业用户。由于this feature仅适用于V1登录用户流,仅 ,因此不建议您使用这种方式。
重置用户个人资料上的密码按钮。仅适用于AAD(组织/企业)用户。请勿对AAD B2C用户使用此按钮。
为什么下面的方法3似乎不起作用?
如上所述,此功能仅适用于Azure AD用户。不是AAD B2C用户。因此,您不能在此处重设B2C用户的密码。
如Alex所说,AAD B2C用户不是Azure AD用户。 B2C用户适用于2c senario。普通的Azure AD用户适用于组织/企业方案。
您也可以参考我对What's the difference between Azure AD B2C tenant and normal Azure AD tenant?
的回答有关B2C密码重置策略的工作原理的更多信息:
在“注册/登录”策略中单击“ 忘记密码” 按钮后,AAD B2C会将带有“ AADB2C90118” 的消息发送回应用程序。
例如,在ASP.NET MVC Web应用程序中,它应该挑战
private Task OnAuthenticationFailed(AuthenticationFailedNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> notification)
{
notification.HandleResponse();
// Handle the error code that Azure AD B2C throws when trying to reset a password from the login page
// because password reset is not supported by a "sign-up or sign-in policy"
if (notification.ProtocolMessage.ErrorDescription != null && notification.ProtocolMessage.ErrorDescription.Contains("AADB2C90118"))
{
// If the user clicked the reset password link, redirect to the reset password route
notification.Response.Redirect("/Account/ResetPassword");
}
这意味着应用程序会将其/Account/ResetPassword
重定向到收到此消息后的消息。
/Account/ResetPassword
是在“帐户控制器”中定义的。应该由您定义的密码重置策略名称来确定。
public void ResetPassword()
{
// Let the middleware know you are trying to use the reset password policy (see OnRedirectToIdentityProvider in Startup.Auth.cs)
HttpContext.GetOwinContext().Set("Policy", Startup.ResetPasswordPolicyId);
// Set the page to redirect to after changing passwords
var authenticationProperties = new AuthenticationProperties { RedirectUri = "/" };
HttpContext.GetOwinContext().Authentication.Challenge(authenticationProperties);
return;
}