c# - 如何使用 System.DirectoryServices.AccountManagement 从 c# asp.net 代码中获取 ADGroup 类型的安全性和分发
问题描述
如何获得 ADGroup 类型的安全性并分发这两种广告组类型。如何让 AdGroup 类型既安全又分发?看不到任何属性来区分组类型?
GetGroups - 返回组对象的集合,这些对象指定当前主体所属的组。此重载方法仅返回主体直接所属的组;不执行递归搜索。
GetAuthorizationGroups - 返回包含此用户所属的所有授权组的主体对象的集合。此函数仅返回属于安全组的组;不返回通讯组。
public async Task<List<AdGroup>> GetGroups(string userName)
{
List<AdGroup> result = new List<AdGroup>();
// establish domain context
PrincipalContext yourDomain = new PrincipalContext(ContextType.Domain);
// find your user
UserPrincipal user = UserPrincipal.FindByIdentity(yourDomain, userName);
// if found - grab its groups
if (user != null)
{
PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();
// PrincipalSearchResult<Principal> groups = user.GetGroups();
var i= 1;
// iterate over all groups
foreach (Principal p in groups)
{
// make sure to add only group principals
if (p is GroupPrincipal)
{
result.Add(new AdGroup
{
Id = i,
Name = ((GroupPrincipal)p).Name,
Type= ((GroupPrincipal)p).IsSecurityGroup.Value) ;
});
i++;
}
}
}
return result;
}
解决方案
推荐阅读
- c - 在我使用 calloc 后,检查列表数组中单个列表是否为空的最佳方法是什么?
- c# - Entity Framework Core 创建多值属性(里面的项目列表和实体)
- c# - 按可空导航属性的属性分组时如何传播导航属性的空值
- python-3.x - 如何在python中修改嵌套pymongo字典记录中的字段
- strapi - Strapi 中的数据库连接测试失败
- azure - 错误 MT2002:无法解析程序集:Microsoft.WindowsAzure.MobileServices.iOS
- android - 在富文本中动态更改文本的颜色/粗细/字体
- mysql - Mysql 5.7:重新调整不存在的 id
- c++ - 'class MainClass' 没有名为 'procent' 的成员
- python - 如何让我的程序被 Windows Protector 和 AntiViruses 识别?