背景
我通过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许可证计划后,才能使用此功能。仅安全组支持基于组的分配。此时,基于组的应用程序分配不支持嵌套的组成员身份