.net Azure AD不发出组声明

.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

我正在尝试通过组为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上的应用程序添加了相关组(假设该组至少包含一个用户)

但我的应用程序中没有任何团体声明。以下代码导致计数始终为零。有什么想法吗?提前谢谢

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的组授权:

  • 开放式visual studio
  • 创建新的Web应用程序
  • 选择身份验证-选择工作或学校帐户(离开读取目录 空白)
  • 转到Azure AD中的新应用->应用注册和 在清单文件中将GroupMembershipClaimes更改为SecurityGroup并保存它
  • 至少等一个小时
  • 测试你是否得到了一个团队 通过将其放入索引文件来声明:
  • 
    @foreach(User.Claims中的var声明)
    {
    @索赔.类型
    @索赔价值
    }
    
    我遇到了一个类似的问题,即组不能作为索赔返回

    为了解决这个问题,我做了两件事:

    • 在Azure广告、应用注册、[用于访问广告的应用注册]、令牌配置下,有一个按钮:“添加组声明”。我在所有的方框上打勾。我可以确认这一步骤是必要的

    • 在同一屏幕中,左侧菜单还具有“API权限”。最初我只有“User.Read”。我有“User.ReadAll”、“Directory.Read”和“Directory.ReadAll”。我在另一步之前已经做了这件事,所以我不确定是否有必要


    谢谢费雪。已经尝试并验证了所有这些步骤。不起作用:(不确定我是否遗漏了一些内容…如果在我将应用部署到Azure后涉及到任何其他步骤。部署到Azure不会影响此行为。并且没有其他步骤可以在id_令牌中发布组声明。我建议您按照从零开始测试,这应该可以很好地工作。