我希望能够在正在构建的ASP.NET Web Forms网站上区分两种不同类型的用户。
所有用户都在我的AD中,我通过将它们放入两个不同的组织单位(OU)来区分这两个用户类型,这些OU分别称为:LRDB和IPPDB。
当我尝试使用此LDAP路径验证登录时:
我收到了一个服务器错误,错误信息如下:
描述:在处理所需配置文件的过程中发生了错误。请查看以下具体错误详情并相应地修改您的配置文件。
解析器错误消息:发生操作错误。
我的 Membership Provider 所在行被标记为出错的位置。
然而,当我更改我的LDAP路径以排除OU部分时,它“起作用了”。所谓的起作用是指在AD中的任何人都可以得到验证,而不仅仅是组织单位中的成员。
如果我无法避免这整个混乱,我想也许我可以允许LDAP路径没有OU,然后一旦它确定用户是AD的一部分,它再检查它属于哪个OU。但是,我没有看到OU的属性。这就是我希望代码看起来像的样子。有办法从用户那里获取OU吗?
感谢您的帮助!
-----------------解决方案------------------
感谢marc_s:
我认为应该是
所有用户都在我的AD中,我通过将它们放入两个不同的组织单位(OU)来区分这两个用户类型,这些OU分别称为: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的属性。这就是我希望代码看起来像的样子。有办法从用户那里获取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=
部分。 - marc_sDC =
部分是您域的顶级)。 - marc_s