Azure AD B2C密码重置

anhgbhbe  于 2023-08-07  发布在  其他
关注(0)|答案(2)|浏览(192)

我正在尝试了解如何使用Azure AD B2C密码重置。
似乎有许多方法可以处理密码重置。这两者有什么区别?这两者之间有价格差异吗??这些功能中是否有一些是Azure AD的功能,而另一些是Azure AD B2C的功能?为什么下面的方法3似乎不起作用?

  • 通过Azure B2C用户流(策略)。
  • 登录v1的策略转到下面的AD密码重置。
  • 虽然所有其他政策都涉及B2C密码重置,但这允许用户通过存储在其用户配置文件中的 * 主电子邮件地址 * 重置密码。
  • 通过Azure Active Directory自助服务密码重置。可通过https://passwordreset.microsoftonline.com访问。这允许用户通过其个人资料中存储的 * 任何电子邮件地址 * 重置密码。
  • 用户配置文件上的重置密码按钮。这将提供临时密码,但该临时密码似乎不起作用。
vcirk6k6

vcirk6k61#

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

目前,我们仅支持在一般情况下重置Azure AD B2C用户密码的两种方法:
1.使用Azure AD B2C密码重置策略/用户流的自助服务重置密码(SSPR)。
1.管理员帮助用户使用Azure AD Graph API重置密码:https://learn.microsoft.com/en-us/previous-versions/azure/ad/graph/api/users-operations#reset-a-users-password--
问题解答:
这两者有什么区别?这两者之间有价格差异吗?这些功能中是否有一些是Azure AD的功能,而另一些是Azure AD B2C的功能?

*密码重置策略/用户流适用于AAD B2C用户。您可以直接使用它。AAD B2C用户可以使用它自行重置密码。这也是一种SSPR。
*Azure Active Directory自助服务密码重置。一般来说,它是为企业用户。由于this feature仅用于V1登录用户流only,因此我不建议您使用此方式。
***使用者设定档上的重设密码按钮。**仅适用于AAD(组织/企业)使用者。不要为AAD B2C用户使用此按钮。

为什么下面的方法3似乎不起作用?
正如我在上面提到的,这个功能只针对Azure AD用户。非AAD B2C用户。因此,您不能在此重置B2C用户的密码。
正如Alex所说,AAD B2C用户不是Azure AD用户。B2C用户是为2C senario.普通Azure AD用户适用于组织/企业场景。

您也可以参考我的答案,了解Azure AD B2C租户和普通Azure AD租户之间的区别是什么?
有关B2C密码重置策略如何工作的详细信息:

  • 点击注册/登录策略中的**“忘记密码”按钮后,AAD B2C将向应用程序返回一条包含“AADB 2C 90118”**的消息。
  • 例如,在一个ASP.NETMVC 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密码重置策略以更改其密码。
eimct9ow

eimct9ow2#

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

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

根据我的经验,唯一真实的的方法是使用用户流(策略)。另外两个仅适用于特定于所讨论的B2C目录的帐户。
您必须考虑到,在B2C场景中,用户的电子邮件地址也可能属于完全不同目录中的“普通”AAD用户(经典B2B)。这两个租户/目录并不真正了解对方。即使它不是AAD帐户,它也可能属于多个不同B2C租户中的用户。每个人都有一个单独的密码。

相关问题