2010-12-13 132 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使用什麼,但是你應該弄清楚這一點。