使用C#从Active Directory获取组织单位

时间:2012-08-08 15:21:12

标签: .net active-directory ldap directoryservices

我想区分我正在构建的ASP.NET Web窗体站点上的两种不同类型的用户。

所有用户都在我的AD中,我区分两者的方法是将它们放在两个不同的组织单位中: LRDB IPPDB

当我尝试使用此LDAP路径在登录时验证它们时:

<add name="ADConnectionString" connectionString="LDAP://test.example.com:389/DC=test,DC=com,OU=IPPDB" />

我收到服务器错误说:

描述:处理为此请求提供服务所需的配置文件时发生错误。请查看下面的具体错误详细信息并相应地修改配置文件。

分析程序错误消息:发生了操作错误。

我拥有会员提供商的行会突出显示错误的来源。

<add enableSearchMethods="true" connectionStringName="ADConnectionString" name="MembershipADProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />

但是,当我更改我的LDAP路径以排除OU部分时,它“有效”。从某种意义上说,AD中的任何人都需要经过身份验证,而不仅仅是组织单位内的成员。

如果我无法避免这一切,我想也许我可能允许LDAP路径没有OU,然后一旦它发现用户是AD的一部分,它然后检查哪个OU是它的一部分。但是,我没有看到OU的属性。 Here's what I would want the code to look like.有没有办法从用户那里获取OU?

感谢您的帮助!

-----------------的 ------------------

感谢marc_s:

我认为应该是

connectionString="LDAP://test.example.com:389/OU=IPPDB,DC=test,DC=com"  

OU=首先在DC=部分

之前

1 个答案:

答案 0 :(得分:1)

  • ou=ippdb,dc=test,dc=com专有名称
  • 专有名称由一系列相对专有名称(RDN)构成,并以逗号(,)分隔。
  • 相对可分辨名称由属性值断言构成,其中断言的左侧是没有选项的属性描述(意味着cn;lang-en=Bart Simpson不是有效的相对可分辨名称,但cn=Bart Simpson有效并且右侧是根据属性描述的语法构造的属性。
  • 用作左侧的属性说明必须为equality matching rule
  • 在相对可分辨名称中,左侧(属性描述)通常称为naming attribute

构造专有名称,使得直接上级RDN位于其直接下级RDN的右侧(以逗号分隔)。在给出的示例中(假设dc=test,dc=com的常规约定在目录信息树中是优越的),ou=ippdb将立即从属于dc=test