我有一个应用程序正在使用ActiveDirectoryMembershipProvider来授予对用户的访问权限.应用程序托管在非域计算机上,应用程序服务器和域控制器之间具有防火墙.
我们已将LDAP端口打开到内部网络的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" />
解决方法
The application is hosted on a non-domain machine,with a firewall between the application server and the domain controller.
由于您可以使用LDAP工具直接查询,因此建议防火墙打开正确.但是,请注意,ActiveDirectoryMembershipProvider不使用纯旧的LDAP,它使用的是Microsoft技术.例如,如果设置connectionProtection =“Secure”,ADMP将尝试使用SSL和端口636,如果失败,它将使用Microsoft的内置IPSec签名(更多详细信息,请参阅this article).
无论如何,这让我想知道几件事情:
> AD域是否具有拒绝与非域/非配置计算机连接的IPSec“必需”策略? (可能不是,因为你连接了普通的LDAP,但值得研究.)>您是否已将域控制器的NetBIOS名称添加到lmhosts文件,并将其DNS名称添加到主机文件? (许多协议检查其目标的报告名称与您尝试连接的名称相匹配.)>许多人注意到在不同域之间使用ADMP的问题,解决方案需要创建单向信任.由于这听起来像您的客户端计算机不在域中,您不能拥有该信任 – 除非(a)它是具有单向信任的不同域的成员,或(b)它是相同的域,因此客户机 – 服务器信任是隐含的.