UserPrincipal.GetGroups与UserPrincipal.GetAuthorizationGroups?
我正在使用ASP.Net 4.0 MVC来查询活动目录。 我试图获取用户的组成员资格列表,并迭代它们。 我有一个奇怪的问题。 获取我正在使用的组:
PrincipalSearchResult groups = up.GetGroups();
哪个在localhost上工作得很好但在移动到IIS6时返回一个空集。 所以我试着用这个:
PrincipalSearchResult groups = up.GetAuthorizationGroups();
哪个在IIS6上运行良好,但在localhost上返回一个空集。 这两种方法有什么区别? 为什么我可以在IIS6中使用一个而不在localhost上使用? 为什么我可以在localhost而不是IIS6中使用另一个?
我假设GetAuthorizationGroups()
调用AD中的tokenGroups。 要读取它,您的服务帐户(或网络服务时的IIS计算机帐户)需要位于AD中的Windows授权访问组中。
为什么部分已被回答,但这可能有助于有人想知道这两种方法之间的function差异。 来自MS文档:
GetGroups – 返回组对象的集合,指定当前主体所属的组。
这个重载方法只返回主体直接成员的组; 不执行递归搜索。
GetAuthorizationGroups – 返回包含此用户所属的所有授权组的主体对象的集合。 此函数仅返回作为安全组的组; 不返回通讯组。
此方法以递归方式搜索所有组,并返回用户所属的组。 返回的集合还可以包括系统将用户视为授权目的的其他组。
因此, GetAuthorizationGroups
获取用户GetAuthorizationGroups
的所有组, GetAuthorizationGroups
获取用户是直接或间接成员的所有授权组。
尽管它们被命名的方式,但其中一个不是另一个的子集。 GetAuthorizationGroups
可能没有返回GetAuthorizationGroups
返回的GetAuthorizationGroups
,反之亦然。
- 如何使用c#使用DomainName获取AD中的OU名称列表?
- PrincipalContext.ValidateCredentials使用NetBios名称在受信任域中变慢
- 如何获取当前登录用户的AD显示名称
- 使用Azure AD时,将用户重定向到自定义登录页面
- 从C#访问AD时“从服务器返回引用”exception
- UserPrincipals.GetAuthorizationGroups枚举组时发生错误(1301)。 升级到Server 2012域控制器后
- 如何使用C#更好地查询Active Directory中的多个域?
- 已经与其基础RCW分离的COM对象无法使用 – 为什么会发生?
- 将byte 或object转换为GUID