我继承了一个连接到我们的 Open Directory 以提供 Web 身份验证的软件。当连接到 OD 时,它就像一个魅力,但我们希望过渡到使用 Active Directory 作为我们的主要身份验证提供程序。
显然,两者之间的 LDAP 方案存在差异,我在过去的 6 个小时里一直在谷歌搜索和阅读,但我仍然有点不知所措。当您尝试登录到Web 界面时,这是显示的错误(这是 Web 界面的样子http://cl.ly/Grgo);
异常详情:
System.DirectoryServices.DirectoryServicesCOMException:发生操作错误。
[DirectoryServicesCOMException (0x80072020): 发生操作错误。]
C:\Program Files\CruiseControl.NET\server\users.lbox.com\WorkingDirectory\LDAPMembershipProvider\LDAPMembershipProvider 中的 LBOX.Membership.LDAPMembershipProvider.ValidateUser(String username, String password)
c:\Program Files\CruiseControl.NET\server\users.lbox.com\WorkingDirectory\LBUserService\Login.aspx.cs:21
System.Web 中的.cs:59 LBUserService.Login.loginButton_Click(Object sender, EventArgs e)。 UI.WebControls.Button.OnClick(EventArgs e) +115
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +140
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,字符串 eventArgument)+29
System.Web.UI.Page.ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint)+2981
这显然与第 59 行LDAPMembershipProvider.cs
和我的web.config
文件有关。
web.config
来自 CruiseControl.net的文件
<membership defaultProvider="LDAP">
<providers>
<add name="LDAP"
type="LBOX.Membership.LDAPMembershipProvider"
LDAPRoot="LDAP://10.0.1.19:389/cn=administrator,cn=users,dc=office,dc=lbox,dc=com" />
</providers>
</membership>
第 59 行从LDAPMembershipProvider.cs
// Attempt to log into the LDAP server as this user
DirectoryEntry root2 = new DirectoryEntry(LDAPRoot, distinctName, password, AuthenticationTypes.ServerBind);
DirectorySearcher searcher2 = new DirectorySearcher(root2);
searcher2.SearchScope = SearchScope.Subtree;
searcher2.Filter = String.Format("cn={0}", username);
我几乎可以肯定这与我LDAP://
尝试使用我连接到 AD 的方式有关,但我无法连接。即使只是猜测,任何帮助都将不胜感激。想法是允许AD在不受约束的情况下验证用户名和密码。