如何确定用户在azure活动目录中的哪个组成员

时间:2017-09-12 11:53:19

标签: c# azure azure-active-directory

我正在使用azure活动目录来控制用户对我的Web应用程序的访问。这一切都很好,但我无法弄清楚如何识别当前登录用户所属的组。在ClaimsIdentity中,我可以看到两个组都设置为azure,但是我无法确定用户所属的这些组中的哪一个(它们只属于2个组中的1个)。我有这个代码,也是我的web.config中的一个键,它与我的管理员用户的密钥匹配,但我的两个组都在claimsidentity对象中。那么如何确定该用户是否在我的管理员组中?

var groups = identity.Claims.Where(x => x.Type.Equals("groups")).ToList();
        //this is a GUID that should match the group objectID for Adminusers in the azure active directory
        string admin = Helpers.Settings.AdminUser;
        if (groups.Any(c => c.Value.Contains(admin)))
        {
            return true;
        }
        else
        {
            return false;
        }

我必须以错误的方式解决这个问题,任何人都会帮助我吗?

1 个答案:

答案 0 :(得分:0)

您似乎已启用Group Claims来检查用户在特定安全组(或多个组)中的成员身份。

组声明将返回当前用户所属的Groups和DirectoryRoles的集合。例如,如果用户是AAD中的全局管理员,并且属于一个组。使用组声明,您将获得两个记录(1个组和1个目录角色)。

如果您想获得用户具有直接或可传递成员资格的所有组(无DirectoryRoles),我们可以使用Azure AD Graph API调用getMemberGroups函数。

在您的方案中,要检查用户是否在您的管理员组中,您可以检查groups声明中是否存在管理员组的对象ID。如果存在,则该用户属于admin group。