我有一个部署到 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 租户是按照此处的说明创建的。
错误消息对我来说不是很清楚 - 我的应用程序代码有问题吗?或者我的租户登记有问题?在哪里可以找到有关此错误的更多信息?
这最终成为我的应用服务身份验证配置的问题。
我在我的应用程序中添加了一些日志。当显示“您无权查看此目录或页面”时,没有任何日志,因此我得出的结论是,这是我的应用服务身份验证配置的问题。
果然,我将 B2B 租户更改为使用 Microsoft Entra 选项,将 B2C 租户更改为使用 OpenID 连接选项,问题得到解决。