我已經能夠爲正在測試的承租人正確設置註冊/登錄策略。我已設置重置密碼屬性以允許每個人使用他們的電子郵件重置密碼。目前用戶使用他們的電子郵件(也是他們的用戶名),名字和姓氏進行註冊。Azure AD B2C自助服務密碼重置鏈接不起作用
但是,當我點擊登錄頁面上的「我忘記了我的密碼」鏈接時,它只是將我重定向回到同一頁面。有什麼我在這裏失蹤?
我已經能夠爲正在測試的承租人正確設置註冊/登錄策略。我已設置重置密碼屬性以允許每個人使用他們的電子郵件重置密碼。目前用戶使用他們的電子郵件(也是他們的用戶名),名字和姓氏進行註冊。Azure AD B2C自助服務密碼重置鏈接不起作用
但是,當我點擊登錄頁面上的「我忘記了我的密碼」鏈接時,它只是將我重定向回到同一頁面。有什麼我在這裏失蹤?
有在Azure的AD B2C重設密碼兩種不同的機制:
登錄在政策:沒有應用程序所需的工作,點擊「我忘記了密碼」重定向用戶自動轉到通用的Microsoft品牌密碼重置頁面。
的註冊/登錄在政策:這就要求應用程序做一些額外的工作。點擊「我忘記了我的密碼」將用戶重定向回錯誤代碼的應用程序。應用程序需要檢測請求中的錯誤代碼,然後將用戶進一步重定向到Azure AD B2C密碼重置策略。密碼重置策略可以進行廣泛的定製。
走進更多的細節如何實現第二個方法,下面是鉤成的AuthenticationFailed通知和重定向到您自己的PasswordReset控制器動作,從B2C Sign-up/Sign-in quickstart, Startup.Auth.cs
private Task AuthenticationFailed(AuthenticationFailedNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> notification)
{
notification.HandleResponse();
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");
}
else if (notification.Exception.Message == "access_denied")
{
// If the user canceled the sign in, redirect back to the home page
notification.Response.Redirect("/");
}
else
{
notification.Response.Redirect("/Home/Error?message=" + notification.Exception.Message);
}
return Task.FromResult(0);
}
代碼
而這裏的代碼PasswordReset控制器動作,用戶將密碼重置B2C政策重定向,從同一B2C Sign-up/Sign-in quickstart, Account Controller
public void ResetPassword()
{
if (!Request.IsAuthenticated)
{
HttpContext.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties() { RedirectUri = "/" }, Startup.PasswordResetPolicyId);
}
}
只是爲了完整性,請確保您結帳full guide/overview of setting up an Azure AD B2C Sign-up/Sign-in Policy
感謝您的一個很好的答案。我正在嘗試將其應用到Azure移動應用程序中,似乎沒有任何處理通知失敗場景的規定。對此有任何想法? TIA – nhwilly
@nhwilly使用微軟推薦的AppAuth-iOS庫(或AppAuth-Android)及其OIDAuthState.authState(byPresenting:present:callback :)方法,然後當用戶在網頁視圖中點擊「我忘記了我的密碼」應該重定向到您的應用程序(使用您提供的重定向URI)並在您定義的回調中,您應該得到一個無authState和一個錯誤。該錯誤將包含代碼「AADB2C90118」。如果您檢測到這一點,則您知道現在需要重定向到上面提到的重置密碼頁面。 – jj0b
謝謝。最後找到了一些樣品,並將其解決。 – nhwilly