我正在使用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;
}
我必须以错误的方式解决这个问题,任何人都会帮助我吗?
答案 0 :(得分:0)
您似乎已启用Group Claims来检查用户在特定安全组(或多个组)中的成员身份。
组声明将返回当前用户所属的Groups和DirectoryRoles的集合。例如,如果用户是AAD中的全局管理员,并且属于一个组。使用组声明,您将获得两个记录(1个组和1个目录角色)。
如果您想获得用户具有直接或可传递成员资格的所有组(无DirectoryRoles),我们可以使用Azure AD Graph API调用getMemberGroups函数。
在您的方案中,要检查用户是否在您的管理员组中,您可以检查groups
声明中是否存在管理员组的对象ID。如果存在,则该用户属于admin group。