我想区分我正在构建的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=
部分
答案 0 :(得分:1)
ou=ippdb,dc=test,dc=com
是专有名称。cn;lang-en=Bart Simpson
不是有效的相对可分辨名称,但cn=Bart Simpson
有效并且右侧是根据属性描述的语法构造的属性。equality matching rule
。naming attribute
。构造专有名称,使得直接上级RDN位于其直接下级RDN的右侧(以逗号分隔)。在给出的示例中(假设dc=test,dc=com
的常规约定在目录信息树中是优越的),ou=ippdb
将立即从属于dc=test
。