我有一个使用ActiveDirectoryMembershipProvider授予用户访问权限的应用程序。该应用程序托管在非域计算机上,在应用程序服务器和域控制器之间具有防火墙。
我们已经在内部网络上打开了DC的DC端口 - 但无论我们尝试什么,我们最终都会收到错误消息“无法联系到指定的域或服务器。”
有没有人对我如何解决这个问题有任何建议?我们已经尝试了所有我们能想到的东西,但却无法实现。
我的连接字符串是:
<add name="ADConnectionString"
connectionString="LDAP://10.5.3.7:389/DC=MyTestDomain,DC=local"/>
我的提供者是:
<add name="ActiveDirectoryMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider"
connectionStringName="ADConnectionString"
attributeMapUsername="SAMAccountName"
connectionProtection="None"
connectionUsername="LdapUser"
connectionPassword="LdapPassword" />
答案 0 :(得分:4)
应用程序托管在非域计算机上,应用程序服务器和域控制器之间有防火墙。
由于您可以使用LDAP工具直接查询,这表明防火墙已正确打开。但是,请记住,ActiveDirectoryMembershipProvider
不使用普通的旧LDAP,而是使用Microsoft技术。例如,如果设置connectionProtection="Secure"
,ADMP将尝试使用SSL和端口636,如果失败,它将使用Microsoft的内置IPSec签名(有关详细信息,请参阅this article)。
无论如何,这让我想起了几件事:
答案 1 :(得分:3)
答案 2 :(得分:1)
你可以使用这两篇文章,可能会解决你的问题
www.ddj.com/windows/184406424
forums.asp.net/t/1408268.aspx
并检查您的防火墙
答案 3 :(得分:1)
我遇到了这个错误,并设法解决了这个问题。导致这种情况的原因有很多,这是一个待确定问题的待办事项清单:
创建一个微应用程序,使用单一方法Membership.GetAllUsers(),在Active Directory(AD)外部的机器上执行,连接字符串中的密码不正确,检查是否收到错误的密码异常。如果你没有得到它,你无法连接到你的AD服务器,检查防火墙,如果你的密码异常无效,请转到下一步。
如果可以的话,尝试在AD服务器上执行相同的app,localy,首先使用不正确的密码,而不是正确的,在本地执行应用程序提供更详细的异常有什么问题(对我来说这个例外导致我修复问题)。就我而言,它告诉我服务器服务没有启动,而工作站服务没有启动。
关于它需要服务器和工作站服务在服务器上运行这一事实的一些想法:afaik服务器服务用于Windows文件共享(netbios over TCP),并且正在使用445端口,所以它可能是这个端口必须除了LDAP端口之外还要打开。我的第二个观察是如果事件445端口打开(netstat -an)它仍然无法正常工作,如果未在网络接口适配器上检查此客户端的Windows客户端和文件和打印机共享复选框,则winows会将所有数据包丢弃到此端口。检查“telnet External_IP 445”。这就是我在遇到这个问题时收集到的所有信息。
答案 4 :(得分:0)
您是否已使用LDAP浏览工具进行测试,从远程复选框中查看它是否可以与此处使用的条件连接?即是连接问题还是其他问题?
答案 5 :(得分:0)
如果有人绊倒了这个并想在墙上砸他们的头...最近尝试为我的公司在与当前环境不同的域中的AD服务器做所有这些。使用提供的IP并获得此处所述的故障。甚至使用像Softerra LDAP Admin这样的工具,它运行良好,但是AccountManagement失败了。
我们有一个公开暴露的网址连接到该IP地址(仍然只允许某些IP拨打电话)。一旦我用提供的URL替换IP,它就像一个魅力。
希望这可以节省一些人的头脑粉碎时间,我只是让自己完成了。