首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UserPrincipal.GetGroups与UserPrincipal.GetAuthorizationGroups?

UserPrincipal.GetGroups与UserPrincipal.GetAuthorizationGroups?
EN

Stack Overflow用户
提问于 2012-06-23 02:22:27
回答 2查看 8.3K关注 0票数 9

我使用ASP.Net 4.0mvc来查询活动目录。我正在尝试获取用户的组成员资格列表,并对其进行迭代。我有个奇怪的问题。要获取我使用的组,请执行以下操作:

代码语言:javascript
复制
   PrincipalSearchResult<Principal> groups = up.GetGroups();

它在本地主机上工作得很好,但在移动到IIS6时会返回一个空集。所以我试着用这个:

代码语言:javascript
复制
    PrincipalSearchResult<Principal> groups = up.GetAuthorizationGroups();

它在IIS6上工作得很好,但在本地主机上返回一个空集。这两种方法有什么不同?为什么我可以在IIS6中使用,而不能在本地主机上使用?为什么我可以在本地主机上使用另一个,而不能在IIS6中使用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-23 05:02:47

我假设GetAuthorizationGroups()在AD中调用tokenGroups。若要阅读此信息,您的服务帐户(如果是网络服务,则为IIS计算机帐户)需要位于AD中的Windows授权访问组中。

票数 7
EN

Stack Overflow用户

发布于 2018-09-17 23:51:44

为什么部分已经回答了,但这可能对想要了解这两种方法之间的功能差异的人有所帮助。来自MS文档:

GetGroups -返回组对象的集合,这些对象指定当前承担者是其成员的组。

此重载方法仅返回主体直接是其成员的组;不执行递归搜索。

GetAuthorizationGroups -返回主体对象的集合,其中包含此用户所属的所有授权组。此函数仅返回属于安全组的组;不返回通讯组。

此方法以递归方式搜索所有组,并返回用户所属的组。返回的集合还可以包括系统出于授权目的而将用户视为其成员的附加组。

因此,GetGroups获取用户是直接成员的所有组,而GetAuthorizationGroups获取用户是直接或间接成员的所有组。

尽管它们的命名方式不同,但其中一个不是另一个的子集。可能存在GetAuthorizationGroups未返回的GetGroups返回的组,反之亦然。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11162008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档