3

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

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

当我尝试使用此 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 的属性。这就是我希望代码的样子。有没有办法从用户那里获取 OU?

谢谢您的帮助!

-----------------解决方案------------------

感谢 marc_s:

我相信应该是

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

OU=首先在DC=零件之前

4

1 回答 1

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.

于 2012-08-08T21:53:30.190 回答