我的任务是创建一个登录页面,该页面允许两个特定组的成员访问MVC项目中的某些 Controller 和操作,我开始为AD创建角色提供程序。我设法使用表单例份验证对它进行配置,并枚举了AD中经过身份验证的用户所属的组。

但是事实证明,要求我为此设置的组不是AD组。我看到了很多小组,但没有看到有问题的小组。

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

有关系吗?

最佳答案

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

    关于active-directory - Active Directory组与Exchange中的组之间有什么关系(如果有)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4622777/

    10-12 04:07