ASP.NET Core - App Service 多个身份提供商,如何配置 Program.cs?

问题描述 投票:0回答:1

我有一个部署到 Azure 应用服务的 ASP.NET Core MVC 应用程序。身份验证配置如下:

“Microsoft”身份提供商是客户租户的 Microsoft Entra 外部 ID; “msb2b”是 Microsoft Entra B2B 租户,配置为 OpenID Connect 提供商。我们以这种方式配置它,以便我们可以支持电子邮件/密码登录和 SSO,应用服务不允许我们添加多个来自 Microsoft 的提供商。

我把我的

Program.cs
做成这样:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddAuthentication(AppServicesAuthenticationDefaults.AuthenticationScheme)
    .AddAppServicesAuthentication();

builder.Services.AddControllersWithViews();

builder.Services.AddRazorPages();

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCors();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapRazorPages();

app.Run();

我将此应用程序部署到 Azure 应用服务。当我访问

https://<my-test-app>.azurewebsites.net/
时,我被重定向到客户的 Microsoft Entra 外部 ID、登录并成功导航回我的应用程序的主页,其中包含所有正确的用户信息。

然后我访问

https://<my-test-app>.azurewebsites.net/.auth/login/msb2b
使用Microsoft Entra B2B登录,我输入了来自不同组织的凭据,成功登录,但应用程序显示:“您没有权限查看此目录或页面。”

B2B 租户是按照此处的说明创建的。

错误消息对我来说不是很清楚 - 我的应用程序代码有问题吗?或者我的租户登记有问题?在哪里可以找到有关此错误的更多信息?

c# azure azure-active-directory asp.net-core-mvc azure-web-app-service
1个回答
0
投票

这最终成为我的应用服务身份验证配置的问题。

我在我的应用程序中添加了一些日志。当显示“您无权查看此目录或页面”时,没有任何日志,因此我得出的结论是,这是我的应用服务身份验证配置的问题。

果然,我将 B2B 租户更改为使用 Microsoft Entra 选项,将 B2C 租户更改为使用 OpenID 连接选项,问题得到解决。

© www.soinside.com 2019 - 2024. All rights reserved.