Azure AD B2C密码重置

时间:2019-02-20 13:52:02

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

我试图了解如何使用Azure AD B2C密码重置。

似乎有多种方法可以处理密码重置。这些有什么区别?两者之间有价格差异吗?是Azure AD的某些功能,还是Azure AD B2C的某些功能?为什么下面的方法3似乎不起作用?

  1. 通过Azure B2C用户流(策略)。

    • 登录v1的策略将在下面设置“重置AD密码”。
    • 尽管所有其他策略都使用B2C密码重置,但允许用户通过存储在用户个人资料中的主电子邮件地址重置密码。
  2. 通过Azure Active Directory自助服务密码重置。可通过https://passwordreset.microsoftonline.com访问。这允许用户通过存储在其个人资料中的任何电子邮件地址重置密码。

  3. 重置用户配置文件上的密码按钮。这提供了一个临时密码,但是该临时密码似乎不起作用。

2 个答案:

答案 0 :(得分:1)

以我的经验为例,假设您的B2C租户名为contoso.onmicrosoft.com或仅仅是contoso.com:

  • 如果通过登录策略注册fooaccount@gmail.com或baraccount@otherAAD.com,则只能通过密码重置策略来更改密码。即使您的帐户属于另一个AAD,您也只能为此租户使用密码。
  • 如果您在B2C租户中手动创建帐户,例如myawesomeaccount@contoso.com,您只能通过经典的AAD方法重置密码。在您的情况下为2),可能为3)。您使用相同的密码登录到B2C应用程序。

根据我的经验,唯一真实的方法是使用用户流(策略)。其他两个仅适用于特定于相关B2C目录的帐户。

您必须考虑在B2C方案中,用户的电子邮件地址也可能属于完全不同的目录(经典B2B)中的“正常” AAD用户。这两个租户/目录彼此之间并不真正了解。即使它不是AAD帐户,它也可能属于多个B2C租户中的用户。每个都有一个单独的密码。

答案 1 :(得分:1)

AAD B2C≠AAD ===> AAD B2C用户≠AAD用户

当前,在一般情况下,我们仅支持两种方法来重置Azure AD B2C用户的密码:

  1. 具有 Azure AD B2C密码重置策略/用户流的自助重置密码(SSPR)。

  2. 管理员帮助用户使用 Azure AD Graph API https://docs.microsoft.com/en-us/previous-versions/azure/ad/graph/api/users-operations#reset-a-users-password--

  3. 重设密码

回答您的问题:

  

两者之间有什么区别?有价格差吗   在这些之间?是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;
            }
  • 然后,该用户将被重定向到B2C密码重置策略以更改其密码。