azure - 在 Azure AD B2C 中取消新用户注册重定向到站点主页,产生 "AuthorizationFailed"错误

标签 azure asp.net-core blazor azure-ad-b2c

我有一个 Blazor 托管 WASM 应用程序,并使用 Azure AD-B2C 来保护它。如果未登录的用户尝试访问该页面上的任何网站,他们就会被定向到我们的 b2c 登录页面,正如他们应该做的那样,如果他们提供了正确的用户名和密码,他们就可以查看该网站。到目前为止,一切都很好。但是,如果用户单击“立即注册”,然后取消注册过程而不是提供新的用户名、密码和电子邮件地址,那么他们将被重定向到该网站的登陆页面(就好像他们提供了一个好的用户名和密码),这无法将它们重定向回 b2c 登录页面,并生成一条控制台消息“info: Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2] 授权失败。这些要求没有得到满足: DenyAnonymousAuthorizationRequirement:需要经过身份验证的用户”

documentation建议我访问应用程序的 list 并将 allowedPublicClient 属性设置为 null 或 true 来解决此问题。我已经这样做了,但问题仍然存在。在这种情况下,为什么用户没有被重定向回 B2C 登录页面,而在其他情况下,如果用户尝试访问网站上的任何页面(包括此登录页面),通常会被重定向回 B2C 登录页面?

最佳答案

这是一个旧线程,但希望专门针对使用 Azure AD-B2C 的 Blazor WASM 提供更新的答案。 如果您使用 Microsoft MSAL 身份验证的标准模板,您将拥有如下所示的 Authentication.razor 页面:

@page "/authentication/{action}"
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication

<RemoteAuthenticatorView Action="@Action" />

@code{
    [Parameter] public string? Action { get; set; }
}

当您的应用程序进行身份验证时,它会通过登录操作路由到此页面,如下所示:

Navigation.NavigateTo($"authentication/login?returnUrl={Uri.EscapeDataString(Navigation.Uri)}");

登录成功后,AD-B2C 通过登录回调操作路由回此页面(可能是从您的 AD-B2C 应用重定向 URL),并且它会自动重定向到 returnUrl:

authentication/login-callback

如果登录不成功,例如用户取消登录,则该操作是登录失败,但没有针对这种情况设置重定向。要添加一个,您可以修改 Authentication.razor 页面以在后续渲染中查找登录失败的操作,并添加重定向,首先注入(inject) NavigationManager:

@page "/authentication/{action}"
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@inject NavigationManager Navigation

<RemoteAuthenticatorView Action="@Action" />

@code{
    [Parameter] public string? Action { get; set; }

    protected override void OnAfterRender(bool firstRender)
    {
        if (!firstRender)
        {
            if (Action == "login-failed")
            {
                Navigation.NavigateTo($"/");
            }
        }
    }
}

在本例中,它重定向到默认索引,但您可以在 NavigateTo 中添加任何有效的重定向路径。 使用 <AuthorizeRouteView> 在 App.razor 文件上管理路由标签,应该由默认模板设置。我看过其他帖子,展示了保护整个应用程序、特定页面或页面特定部分的不同方法(例如使用 <AuthorizeView> 标签)。

关于azure - 在 Azure AD B2C 中取消新用户注册重定向到站点主页,产生 "AuthorizationFailed"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65694182/

相关文章:

asp.net-core - 使用新的 VSO 构建代理为 vNext 应用程序设置 CD

javascript - Blazor:如何包含与 Nuget-Package-Manager 一起安装的 javascript-package?

c# - 如何使用 ASP.NET Core 托管生成 Blazor wasm 脚手架 CRUD (EF)

c# - 找不到项目文件

c# - 带有 oData V4 客户端生成器的 AADL

Azure - 用于将 Web 作业从 ASE 移动到 Kubernetes (AKS) 的迁移选项

c# - 在代码后面执行授权检查

azure - 将 HDInsight 群集升级/迁移到最新版本

asp.net - 如何在 ASP.Net Core 2.0 应用程序中使用 Bootstrap?

c# - 存储库模式和更改日志实现