6

我的任务是创建一个登录页面,允许两个特定组的成员访问 MVC 项目中的某些控制器和操作,我着手为 AD 创建一个角色提供程序。我设法让它配置了表单身份验证,并枚举了经过身份验证的用户在 AD 中所属的组。

然而,事实证明,我被要求为其设置的组不是 AD 组。我看到很多团体,但没有看到有问题的团体。

该请求是基于这些组出现在 Exchange 的全球通讯簿中的事实,但似乎没有 1:1 的关系。

什么关系吗?

4

1 回答 1

7

Active Directory 中有两种类型的组,通讯组列表和安全组。安全组用于 ACL,而分发列表主要用于电子邮件列表和其他非 ACL 相关的东西。

  • UserPrincipal.GetAuthorizationGroups() 仅返回安全组。
  • UserPrincipal.GetGroups() 返回安全组以及分发列表。

请注意,与 UserPrincipal.GetAuthorizationGroups() 不同,UserPrincipal.GetGroups() 仅返回用户所属的直接组。如果 GroupA 包含 GroupB 而 GroupB 包含 UserX,则 userX.GetGroups() 只返回 GroupB 而不是 GroupA。

附带说明一下,.NET 3.5 SP1 中存在错误。UserPrincipal.GetGroups() 可能无法正常工作,您可以查看此修补程序http://support.microsoft.com/kb/969166

于 2011-01-08T01:54:09.880 回答