2010-12-13 126 views
4

我正在使用LDAPS身份验证与开源CMS ez发布。我已经完成了所有我要支持的配置设置。但是,我仍然无法获得LDAPS身份验证!使用LDAPS身份验证

在调试时,我发现ldap_connect失败,有时会返回资源ID#80或资源ID#75。是否有任何文档描述这些资源id的含义?即使是ldap_connect的php文档也没有关于这些资源ID的任何信息。还是有什么我可以做错了吗?

+0

ldap_connect是一件棘手的事情。你能告诉我们一些代码(安全部分被遮盖)吗? – Thariama 2010-12-13 09:58:11

+0

我为此编写的代码并不多。我只是在ezpublish配置文件中提供LDAPVersion,LDAPServer,LDAPPort,LDAPBaseDn等,ezpublish使用主机名和端口并调用ldap_connect这是一个php函数。在我的情况下,当我调试时失败了,我发现他们有一个特定的资源ID,就像我在问题中提到的那样。 – pavanred 2010-12-13 10:08:08

回答

3

The PHP manual on resources.看起来像ldap_connect()是成功的。如果失败,则返回FALSE

+0

Interesing ..我做了一个get_resource_type的资源ID returend由ldap_connect并返回“ldap链接”。我做了一个快速搜索,但没有找到关于它的很多信息,任何想法是什么意思? – pavanred 2010-12-13 10:28:22

+0

从手册:“资源是一个特殊的变量,持有对外部资源的引用,资源由特殊功能创建和使用。”在你的情况下,“外部资源”是......将它想象成连接你与LDAP服务器的电话线的末端。实际上,资源的类型或ID完全不相关。该类型始终是“ldap链接”,因为这是'ldap_connect()'的意图,PHP内部使用该ID来寻址正确的“电话线”(您可以同时持有多行或多行资源) 。 – rik 2010-12-13 10:46:48

1

最常见的SSL相关问题是信任连接中使用的证书。

如果您的LDAP服务器SSL证书未由知名CA或更正确地由您的SSL库所知的CA签名,则通常会失败。要解决这个问题,你必须让你的SSL库信任CA.

Windows(IE),Firefox,Safari等都有自己的密钥存储机制,您可以将CA的可信根证书导入到它们中。然后,由该CA签署的所有证书现在都值得信赖。

Java使用JKS密钥库文件,旧的Netscape使用cert.db7或cert.db8文件。不知道PHP使用什么,但是你应该弄清楚这一点。