【问题标题】:Azure Authentication only works for home page, not all pages in the blazor web assemble appAzure 身份验证仅适用于主页,并非 blazor web assemble 应用中的所有页面
【发布时间】:2022-01-24 23:27:35
【问题描述】:

我正在尝试为 Blazor Web 程序集托管应用实施 Azure AD 身份验证和授权。仅当我请求主页时,身份验证才有效。如果我直接尝试访问应用程序中的其他端点,即使我没有登录,它也会加载内容。如果我尝试访问应用程序中的任何页面,我希望被提示输入凭据。我想我需要一些额外的代码或设置,但不明白如何以及在哪里做。请帮忙。

【问题讨论】:

  • 请参考此链接了解更多详情:-docs.microsoft.com/en-us/aspnet/core/blazor/security/…
  • 我遵循了同一份文件。没有按预期工作。谢谢。
  • 你直接在 azure 门户中设置了Authentication 吗?或者在你的程序中添加代码?您使用哪种方式?
  • 您好@Deepika,如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记将其从灰色切换为已填充。)或投票它对您有任何帮助。这对其他社区成员可能是有益的。谢谢。

标签: azure asp.net-core azure-active-directory blazor-webassembly microsoft-identity-platform


【解决方案1】:

• 我尝试创建一个 Azure AD 托管的 Blazor Web 程序集应用程序,并使用下面的 github 链接将其与 Azure AD 身份验证集成。正如您在下面的快照中看到的那样,它对我来说工作正常:-

Github 链接:-https://github.com/Azure-Samples/ms-identity-blazor-server/blob/main/WebApp-OIDC/MyOrg/README.md

在 Azure AD 中注册的应用程序:-

在 VS 代码中构建和执行应用程序:-

Blazor Web 程序集应用程序运行输出:-

另外,当我退出后直接尝试在应用程序中打开不同的页面时,它会要求我再次登录应用程序,如下所示:-

请检查以上显示页面的 URL 如下:-

https://login.microsoftonline.com/6b5fb116-315a-4e79-8923-49e5338f3b0c/oauth2/v2.0/authorize?client_id=e014b246-9de0-4e20-a5fc-98b44cd12d91&redirect_uri=https%3A%2F%2Flocalhost%3A44318%2Fsignin-oidc&response_type=id_token&scope=openid%20profile&response_mode=form_post&nonce=637762757113524173.ZTgxYmY1ODUtNGM4Yi00NWFmLWFiZDctOTNhNmJjN2NjNzdhYzhhZjcxNzYtNDhlZC00NGZiLTgyMjktNjhkYzQ2Yzk1NzY3&client_info=1&x-client-brkrver=IDWeb.1.3.0.0&state=CfDJ8BaRuiKB4iBEjoN1dXV_1w4a1v55GuR6GFNUs9Q8Eeq4tSHQDq3FoBQmyUn30VOR2HhpKUs-Nxhg9UUUzT8TTMtQyL-ZQRUVrYUSYhPNejtGIq_mmrmj3L5ubH9B6q0v1QjVzcTeaE70pgMHDCTgDY6p0viJPCbySeTU59hrW_aKfFFrs7HCrSaYWX2ZQYTZieIuip0YeKjowX7PzEXRh9Gotl0EcRessQPXOMu_b1IahUSwvOaBfoh-DyTqbNub6ZO18Y8d7chBLKB6LsTAH04-99eOKxF80kiYXNkqthNjQYWhhDjFkukoZO4FEQ_-tw&x-client-SKU=ID_NETSTANDARD2_0&x-client-ver=5.5.0.0&sso_reload=true

因此,当您构建托管在 Azure AD 中的 blazor Web 程序集应用程序时,请确保在相关应用程序项目的“startup.cs”文件中包含“需要经过身份验证的用户”参数,如下所示,以要求应用程序询问当您导航到应用程序中的任何页面时登录:-

    ‘  {
            var policy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
            options.Filters.Add(new AuthorizeFilter(policy));
        }).AddMicrosoftIdentityUI();

        services.AddRazorPages();
        services.AddServerSideBlazor();
    } ‘

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    相关资源
    最近更新 更多