Azure自定义策略KMSI-密码重置和取消注册重定向到身份验证响应url

Azure自定义策略KMSI-密码重置和取消注册重定向到身份验证响应url,azure,authentication,azure-ad-b2c,Azure,Authentication,Azure Ad B2c,我将其用于B2C web应用程序/web api认证/授权。我还使用本地帐户和 我遇到的问题是,当用户单击“忘记pwd”或“取消注册”时,web应用程序会重定向到身份验证重定向url(在我的示例中为xxx/azurewebsites.net/api/UserAccess),而不进行身份验证: B2C(虽然它是为用户流设置的,我使用的是自定义策略)已经在用户单击“忘记密码”时处理错误异常——我使用的是相同的代码。但是,我的web应用程序出现错误AADB2C90118(单击忘记密码),但OnAut

我将其用于B2C web应用程序/web api认证/授权。我还使用本地帐户和

我遇到的问题是,当用户单击“忘记pwd”或“取消注册”时,web应用程序会重定向到身份验证重定向url(在我的示例中为xxx/azurewebsites.net/api/UserAccess),而不进行身份验证:

B2C(虽然它是为用户流设置的,我使用的是自定义策略)已经在用户单击“忘记密码”时处理错误异常——我使用的是相同的代码。但是,我的web应用程序出现错误AADB2C90118(单击忘记密码),但OnAuthenticationFailed将其重定向到身份验证响应url,而不执行身份验证

下面是Fiddler显示我的webapp行为:单击忘记密码->拾取错误->重定向到未经验证的验证响应URL:

这里是MSFT的:点击忘记密码->拾取错误->重定向回身份验证:

在我的Start.Auth OnAuthenticationFailed下面,我添加了错误AADB2C90091,以满足用户单击注册并取消时的需要:

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");
                notification.Response.Redirect("/");
            }
            else if (notification.ProtocolMessage.ErrorDescription != null && notification.ProtocolMessage.ErrorDescription.Contains("AADB2C90091"))
            {
                // If the user clicked the Cancel for reset password or sign up link, redirect to login page
                notification.Response.Redirect("/Account/SignUpSignIn");
            }
            else if (notification.Exception.Message == "access_denied")
            {
                notification.Response.Redirect("/");
            }
            else
            {
                notification.Response.Redirect("/Home/Error?message=" + notification.Exception.Message);
            }
            return Task.FromResult(0);
        }
身份验证的私有任务失败(AuthenticationFailedNotification通知) { notification.HandleResponse(); //处理Azure AD B2C在尝试从登录页面重置密码时抛出的错误代码 //因为“注册或登录策略”不支持密码重置 if(notification.ProtocolMessage.ErrorDescription!=null&¬ification.ProtocolMessage.ErrorDescription.Contains(“AADB2C90118”)) { //如果用户单击了重置密码链接,则重定向到重置密码路由 notification.Response.Redirect(“/Account/ResetPassword”); 通知.响应.重定向(“/”); } else if(notification.ProtocolMessage.ErrorDescription!=null&¬ification.ProtocolMessage.ErrorDescription.Contains(“AADB2C90091”)) { //如果用户单击了“取消重置密码”或“注册”链接,请重定向到登录页面 notification.Response.Redirect(“/Account/SignUpSignIn”); } else if(notification.Exception.Message==“访问被拒绝”) { 通知.响应.重定向(“/”); } 其他的 { notification.Response.Redirect(“/Home/Error-message=“+notification.Exception.message”); } 返回Task.FromResult(0); }
在使用和教程标准文件时,使用教程中解释的更改;我不确定这些变化是否会对我发现的这个问题产生影响。我附加到xml文件的链接

您的自定义策略是否处于开发模式?喜欢它可能会阻止HTTP 302,而不是向您显示错误。感谢@Jas Suri的想法,它在生产中没有应用程序洞察干扰,我可以看到您的自定义策略处于开发模式吗?喜欢它可能会阻止HTTP 302,而不是向您显示错误。感谢@Jas Suri的想法,它在生产中没有应用程序洞察干扰我所看到的