2010-01-27 194 views
2

我们已经编写了可以请求多个LDAP目录的SharePoint Web应用程序的身份验证提供程序。请求LDAP的问题:服务器不愿意处理请求

其中一个LDAP服务器必须通过SSL请求。因此,我们将用于签署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 

什么情况会导致这个错误?

UPDATE:

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

UPDATE /解决方案:

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

回答

0

您的证书可能不是由完全信任的CA提供。你是否已经进入证书mmc的信任关系并将CA服务器建立为LDAP服务器上的受信任根管理员?

编辑:另外值得注意的是,服务器的报告名称可能与传递的证书不匹配。您可能需要检查LDAP服务器的日志,以确保服务器名称与证书列表的相同。

+0

我们没有对LDAP服务器的管理访问权限,因为它是我们客户的服务器,也向我们提供了证书。 – Flo 2010-01-27 19:01:07

+0

其实我只是看到了一些东西。如果你使用LDAP安全,你不能使用LDAP://,你需要使用LDAPS://。否则,它将在应该加密时发送明文凭证。 – 2010-01-27 19:08:02

+0

好吧,我会试试看。我不确定的另一件事是我是否将证书存储在正确的商店中。我把它放进电脑的商店。我认为它应该可以用于身份验证提供程序。为了检查这一点,我尝试通过IE访问LDAP,并注意到LDAP服务器的证书已经过验证。所以我认为当IE可以访问证书进行验证时,证书应该放在正确的位置。 – Flo 2010-01-27 20:27:35

0

我相信当修改中的用户被禁用时会发生此错误。

尝试启用用户并重试修改。