【发布时间】:2012-08-08 15:21:12
【问题描述】:
我想在我正在构建的 ASP.NET Web 窗体站点上区分两种不同类型的用户。
所有用户都在我的 AD 中,我区分这两者的方法是将它们放在两个不同的组织单位中,分别称为:LRDB 和 IPPDB。
当我尝试使用此 LDAP 路径在登录时验证它们时:
<add name="ADConnectionString" connectionString="LDAP://test.example.com:389/DC=test,DC=com,OU=IPPDB" />
我收到一个服务器错误提示:
说明:处理此请求所需的配置文件时出错。请查看下面的具体错误详情并适当修改您的配置文件。
解析器错误消息:发生操作错误。
我的 Membership Provider 所在的行突出显示为错误的来源。
<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= 部分之前
【问题讨论】:
-
我认为应该是
connectionString="LDAP://test.example.com:389/OU=IPPDB,DC=test,DC=com"- OU 首先在DC=部分之前 -
是的!这似乎已经做到了!非常感谢!!!!
-
LDAP 地址始终是“自下而上”构建的 - 例如从层次结构的最低层到最高层(
DC=部分是您域的顶层)。 -
我明白了。从现在开始我会记住这一点,谢谢!
标签: .net active-directory ldap directoryservices