.NET Core Azure AD应用程序注册--允许通过组进行访问



背景

我通过Azure web Apps for Containers在docker中部署了一个.NET Core 3.1网站。

该应用程序仅在我们组织的Azure AD中注册,并且必须添加用户才能授予访问权限。

该网站在一段时间内运行正常,具有基于个人的访问权限。该应用程序使用默认访问权限。如果有人可以访问网站,那么他们就可以访问网站内的所有内容。

我们的Azure AD租户是高级P2租户。

目标

我想使用安全组访问应用程序,而不是在Azure AD中将个人添加到应用程序。

问题

  • 我前往组织的Azure AD中的应用程序注册
  • 我选择Users and Groups菜单
  • 我添加了包含我希望授权的个人的组,具有Default Access角色(唯一可用的角色(
  • 我删除了个人(所有人都是该组的成员,这是我们首选的访问管理(

预期行为

用户仍然可以访问该网站,因为该组已获得授权,并且他们是该组的成员。

实际行为

用户被拒绝访问,除非我也将他们添加为个人。

在日志中,我看到以下内容:

消息包含错误:"access_denied",errordescription:"AADSTS50105:未将登录用户"{EmailHidden}"分配给应用程序"{Redacted GUID}"(Redacted App Name(的角色。

但是,在这种情况下,所有个人都是已注册的组的一部分,并且该组具有与授予这些个人相同的Default Access角色。

我尝试过的事情:

  • 根据K.Scott Allen(RIP(的这篇文章,我已经更新了应用程序的清单,将groupMembershipClaims设置为SecurityGroup

问题

如何从Azure AD企业应用程序中的个人用户访问转移到基于组的访问?

更新:身份验证码

根据请求,提供我用于设置身份验证的代码。

IIRC,这只是针对Azure的开箱即用的.NET Core设置。在Startup.cs

services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options =>
{
Configuration.Bind("AzureAd", options);
});

AzureAd配置部分看起来像:

"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "(Redacted)",
"TenantId": "(Redacted Guid)",
"ClientId": "(Redacted Guid)",
"CallbackPath": "/signin-oidc"
}

用户是分配给应用程序的组的直接成员吗?

他们需要这样做,因为AAD应用程序不支持根据https://learn.microsoft.com/en-us/azure/active-directory/users-groups-roles/groups-saasapps

重要

只有在启动Azure AD Premium试用版或购买Azure AD Premium许可证计划后,才能使用此功能。仅安全组支持基于组的分配。此时,基于组的应用程序分配不支持嵌套的组成员身份

相关内容

最新更新