.net Azure AD不发出组声明
我正在尝试通过组为azure上的应用程序设置基于角色的访问。我关注了以下文章(很抱歉将链接作为代码发布,不允许发布超过1个链接)。但是,我的应用程序没有收到任何团体声明.net Azure AD不发出组声明,.net,azure,active-directory,.net,Azure,Active Directory,我正在尝试通过组为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
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上的应用程序添加了相关组(假设该组至少包含一个用户)
但我的应用程序中没有任何团体声明。以下代码导致计数始终为零。有什么想法吗?提前谢谢
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);
}
由于您在应用程序的清单中指定了
SecurityGroup
,Azure AD只发布此类类型的组声明。您可以将SecurityGroup
更改为All
,以使Azure广告发布各种团体声明
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/
并且还要确保用户是少于150个组的成员,因为组的数量有限制(请参阅)
并确保在web应用中登录的用户已被分配组。您可以参考代码示例以显示组索赔。问题已解决。我查错了应用程序配置文件。在我的广告中注册了许多应用程序(沙盒、测试等)。结果是我编辑了错误的个人资料。我在问题中提到的步骤确实有效。感谢@Fei Xue-MSFT为我提供的时间和帮助。我在这里遇到的另一个问题是:耐心
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/
将清单中的GroupMembershipClaimes从null更改为SecurityGroup后,需要等待。。有时长达一小时。我想我错过了权限等等,但只要登录的用户能够访问AD中的读取组(通常是这样),就不需要额外的权限
因此,要获得使用Azure AD的组授权:
@foreach(User.Claims中的var声明)
{
@索赔.类型
@索赔价值
}
我遇到了一个类似的问题,即组不能作为索赔返回
为了解决这个问题,我做了两件事:
- 在Azure广告、应用注册、[用于访问广告的应用注册]、令牌配置下,有一个按钮:“添加组声明”。我在所有的方框上打勾。我可以确认这一步骤是必要的
- 在同一屏幕中,左侧菜单还具有“API权限”。最初我只有“User.Read”。我有“User.ReadAll”、“Directory.Read”和“Directory.ReadAll”。我在另一步之前已经做了这件事,所以我不确定是否有必要