簡體   English   中英

Azure AD B2C密碼重置

[英]Azure AD B2C Password Reset

我試圖了解如何使用Azure AD B2C密碼重置。

似乎可以通過多種方式處理密碼重置。 這些有什么區別? 這些之間有價格差異嗎? 是否具有Azure AD的這些功能,有些是Azure AD B2C的功能? 為什么下面的方法3看起來不起作用?

  1. 通過Azure B2C用戶流(策略)。

    • 登錄v1的策略轉到下面的AD密碼重置。
    • 雖然所有其他策略都轉到B2C密碼重置,但允許用戶通過存儲在其用戶配置文件中的主電子郵件地址重置其密碼。
  2. 通過Azure Active Directory自助服務密碼重置。 可通過https://passwordreset.microsoftonline.com訪問。 這允許用戶通過存儲在其配置文件中的任何電子郵件地址重置其密碼。

  3. 在用戶配置文件上重置密碼按鈕 這提供了一個臨時密碼,但臨時密碼似乎不起作用。

我的經驗,假設您的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租戶中的用戶。 每個都有一個單獨的密碼。

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- -

您的問題的答案:

這些有什么區別? 這些之間有價格差異嗎? 是否具有Azure AD的這些功能,有些是Azure AD B2C的功能?

  • 密碼重置策略/用戶流程適用於AAD B2C用戶。 你可以直接使用它。 AAD B2C用戶可以使用它來自行重置密碼。 它也是一種SSPR。

  • Azure Active Directory自助服務密碼重置 通常,它適用於企業用戶。 由於此功能只是為V1登錄用戶只能流,我不建議你用這種方式。

  • 在用戶配置文件上重置密碼按鈕 它僅適用於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密碼重置策略如何工作的更多信息:

  • 在Signup / in policy中點擊“忘記密碼”按鈕后,AAD B2C會將帶有“AADB2C90118”的消息發送回應用程序。

  • 例如,在ASP.NET MVC Web App中,它應該挑戰

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在此處由Account Controller定義。 它應由您定義的密碼重置策略名稱確定。

    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密碼重置策略以更改其密碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM