我正在尝试使用DirectoryEntry
.NET类连接到AD。但是我收到了一个错误
参数不正确
尝试访问时
DirectoryEntry.NativeObject
以强制进行身份验证。
任何人都可以建议这个错误的原因,或者如何识别这里的错误?
代码段:
Dim deRoot As New System.DirectoryServices.DirectoryEntry
deRoot = New DirectoryEntry("LDAP://SERVERNAME:PORT/DOMAINSTRING", "USER_NAME", "PASSWORD", AuthenticationTypes.SecureSocketsLayer)
Dim obj As Object = deRoot.NativeObject
执行第3行时会出现问题。
注意:同样适用于许多LDAP服务器。需要知道此服务器的不同之处或确定需要传递什么才能使其正常工作。
此致
答案 0 :(得分:0)
出于某种原因,它不喜欢你的证书。
第一步是检查证书。您可以使用DigiCert的实用程序:http://www.digicert.com/util
运行它,然后点击工具'选项卡,然后'检查安装'。对于“服务器地址”'输入您的域名DNS,然后输入636作为端口。然后点击查询服务器'。有两件事需要注意:
您必须使用'主题名称'在证书上连接到AD。例如:
deRoot = New DirectoryEntry("LDAP://{SubjectName}:PORT/DOMAINSTRING", "USER_NAME", "PASSWORD", AuthenticationTypes.SecureSocketsLayer)
该主题名称'可能是您的某个域控制器的名称,例如server1.domain.com。如果你可以使用它,那很好。如果您不能按原样使用它,那么您可以修改您的主机文件,以便在“主题名称”中显示任何域名。指向IP。不理想,但它可能有效。
如果负载均衡器后面的每个服务器都在提供不同的证书,那么主机文件技巧将无法运行。如果发生这种情况,那你就不走运了。
此外,证书必须是可信的。例如,它可能是自签名的。在这种情况下,您必须在拨打电话的计算机上安装证书。
这样做的一个线索是,每次尝试时,您都会在Windows系统事件日志中看到来自“Schannel”的错误。这样说:
从远程服务器收到的证书是由 不受信任的证书颁发机构。因此,没有数据 证书中包含的内容可以进行验证。 TLS连接 请求失败。附加的数据包含服务器证书。
对此的解决取决于它是否实际上是自签名的,或者只是由您的计算机上不受信任的证书颁发机构签名。如果情况确实如此,我可以提供帮助。