我正在尝试通过Azure上的应用程序组设置基于角色的访问权限。我关注了以下文章(抱歉以代码形式发布链接,不允许发布超过1个链接)。但是,我的应用程序没有收到任何组声明。
https://www.simple-talk.com/cloud/security-and-compliance/azure-active-directory-part-4-group-claims/
http://www.dushyantgill.com/blog/2014/12/10/roles-based-access-control-in-cloud-applications-using-azure-ad/
"我所做的一切"
清单文件
"appId": "d754a979-689d-45f8-8c63-983de55840da"
"appRoles": [
{
"allowedMemberTypes": [
"User"
],
"displayName": "Manager",
"id": "1e06dae5-467a-40cf-a9a6-14baf3969472",
"isEnabled": true,
"description": "Manages",
"value": "Manager"
},
{
"allowedMemberTypes": [
"User"
],
"displayName": "Issuer",
"id": "da85f458-720d-4c09-861f-92f5c465ee3e",
"isEnabled": true,
"description": "Issues",
"value": "Issuer"
},
{
"allowedMemberTypes": [
"User"
],
"displayName": "Supervisor",
"id": "d64807d4-6e12-4637-a049-2a61b250507b",
"isEnabled": true,
"description": "Can perform any function",
"value": "Supervisor"
}
],
"availableToOtherTenants": false,
"displayName": "traffic",
"errorUrl": null,
"groupMembershipClaims": "SecurityGroup",
"homepage": "https://myapp.ca",
"identifierUris": [
"https://myapp.azurewebsites.net/"
],
还添加了Azure上应用程序的相关组(假设该组至少包含一个用户)Groups Assignment on Azure
但是我的应用程序中没有任何群组声明。下面的代码总是导致计数为零。有什么想法吗?提前感谢。
var claims = ClaimsPrincipal.Current.Claims.Where(c => c.Type == "groups");
Debug.Print("Total Group Claims in HomeController #### "+claims.Count());
foreach (Claim c in claims)
{
Debug.Print("%%%%%%%% " + c.Value + " %%% VALUETYPE %%% " + c.Type);
}
5条答案
按热度按时间xcitsw881#
问题解决了。我选错了应用程序配置文件。有很多应用程序注册到我的AD(沙盒,测试等)。原来我编辑了错误的配置文件。我在问题中提到的步骤确实有效。感谢@Fei Xue - MSFT的时间和帮助。
0g0grzrc2#
我在这里遇到的另一个问题是好老:耐心点!
在您将清单中的groupMembershipClaims从null更改为SecurityGroup之后,您需要等待它..有时长达一个小时。我以为我错过了权限之类的东西,但只要登录的用户有权从AD读取组(他们通常这样做),就不需要额外的权限。
因此,要获得使用Azure AD的组授权:
1.打开Visual Studio
1.创建新的Web应用
1.选择身份验证-选择工作或学校帐户(将“读取”目录留空)
1.转到Azure AD中的新应用-〉应用注册,然后在清单文件中将groupMembershipClaims更改为SecurityGroup并保存。
1.等待至少一个小时。
1.通过将以下内容放入索引文件中,测试您是否正在获取组声明:
6tqwzwtp3#
我有一个类似的问题,群体没有被归还的索赔。
为了弥补我做了两件事
xzlaal3s4#
由于你在应用程序的清单中指定了
SecurityGroup
,因此Azure AD仅发出此类类型的组声明。你可以将SecurityGroup
更改为All
,以使Azure AD发出所有类型的组声明。并且还确保用户是少于150个组的成员,因为存在组的数量限制(参考here)。
并确保登录web应用的用户已经被分配了组。您可以参考代码示例active-directory-dotnet-webapp-groupclaims来显示组声明。
14ifxucb5#
如果您在“单点登录”页面的关联企业应用程序中配置了组过滤,请确保过滤器与您的用户所属的组匹配。
非常奇怪的是,本主题中描述了组过滤功能。https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-fed-group-claims#group-filtering