我们为SharePoint Web应用程序编写了一个身份验证提供程序,它可以请求多个LDAP目录。

必须通过SSL请求LDAP服务器之一。因此,我们将用于签署LDAP服务器的证书的CA证书导入到SharePoint服务器的证书存储中。

以下代码段显示了我们如何验证用户身份。传递的凭据(帐户,密码)属于我们要验证的用户。

 var entry = new DirectoryEntry("LDAP://<ldap-server-address>", "cn=account,ou=sub,o=xyz,c=de", "password", AuthenticationTypes.SecureSocketsLayer);
 var searcher = new DirectorySearcher(entry);
 var found = searcher.FindOne();


处理代码后,对searcher.FindOne()的调用将引发以下异常。

System.Runtime.InteropServices.COMException (0x80072035): The server is unwilling to process the request


什么情况会导致此错误?

更新:

I found some information about the error message。问题似乎在于证书存储,因为用户仅将证书存储在用户的存储中,而不是计算机的存储中。不幸的是,我们已经将其存储在那里。那么这可能仍然是证书问题吗?

更新/解决方案:

其实问题就解决了。似乎根CA证书已正确导入,但LDAP服务器响应的错误消息是由客户提供给我们进行测试的用户帐户过期引起的。

最佳答案

完全不受信任的CA可能无法提供您的证书。您是否已进入证书mmc的信任关系并将CA服务器建立为LDAP服务器上的受信任根权限?

编辑:还要注意,服务器的报告名称可能与通过的证书不匹配。您可能要检查LDAP服务器的日志,以确保服务器名称与证书列表报告的名称相同。

10-08 08:14
查看更多