![](/img/trans.png)
[英]getting error when authenticate against active directory with php ldap
[英]PHP LDAP Connection to Authenticate against Active Directory from External Server
我有一個外部Web服務器試圖通過LDAP對內部服務器上的Active Directory進行身份驗證。 我可以在本地進行連接和身份驗證,盡管使用相同的代碼(切換主機和端口)無法在外部進行身份驗證。 我們還有其他能夠連接和認證的服務,例如Attask(http://www.attask.com/)。
外部服務器當前是Media Temple上的Linux(gs),運行PHP 5.3.15,並且已啟用LDAP支持。
內部服務器當前是帶有LDAP和Active Directory的Windows Server 2008。
下面的代碼是我正在使用的當前PHP,該PHP能夠在本地連接,但是在外部服務器上有問題。 它基本上使用PHP LDAP連接字符串並嘗試進行綁定。 如果失敗,它將嘗試匿名綁定。 兩者都無法在外部工作,並返回錯誤:無法聯系LDAP服務器。
<?php
$username = 'username';
$password = 'password';
$ldapconfig['host'] = '00.000.000.000';
$ldapconfig['port'] = '636';
$ldapconfig['basedn'] = 'dc=client,dc=eqc,dc=local';
$ds=ldap_connect($ldapconfig['host'], $ldapconfig['port']);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
ldap_set_option($ds, LDAP_OPT_NETWORK_TIMEOUT, 10);
$dn="".$username."";
if ($bind=ldap_bind($ds, $dn, $password)) {
echo("Login correct");
} else {
echo("Unable to bind to server.</br>");
echo("msg:'".ldap_error($ds)."'</br>".ldap_errno($ds)."");
if ($bind=ldap_bind($ds)) {
$filter = "(cn=*)";
if (!($search=@ldap_search($ds, $ldapconfig['basedn'], $filter))) {
echo("Unable to search ldap server<br>");
echo("msg:'".ldap_error($ds)."'</br>");
} else {
$number_returned = ldap_count_entries($ds,$search);
$info = ldap_get_entries($ds, $search);
echo "The number of entries returned is ". $number_returned."<p>";
for ($i=0; $i<$info["count"]; $i++) {
var_dump($info[$i]);
}
}
} else {
echo("Unable to bind anonymously<br>");
echo("msg:".ldap_error($ds)."<br>");
}
}
?>
一些注意事項:
外部LDAP服務器正在使用LDAPS,因此建議的主機在端口636上為ldaps://00.000.000.000
我已經嘗試與“用戶名”以及“用戶名@ 00.000.000.000”綁定
有一個防火牆,但是,外部服務器可以成功ping通內部LDAP服務器,因此在該級別上進行連接。
任何幫助將不勝感激。 如果有服務器設置或類似性質的事情,不妨了解一下。 另外,我已經檢查了ADFS,雖然找不到一個簡單的腳本來進行測試,但是如果不起作用,則會花費大量時間無休止地進行測試。
從Linux機器使用LDAPS連接到AD時,我總是不得不添加該行
TLS_REQCERT never
在/etc/ldap.conf或等效文件中(可能需要重新啟動apache-不確定)。 您也可以為主機嘗試格式“ ldaps://server.domain.tld:636”,盡管我認為這不是問題。
我在http://en.gentoo-wiki.com/wiki/Active_Directory_Authentication_using_LDAP中找到了一些不錯的文檔,盡管目前看來該文檔已經不存在了。 Google的緩存版本: http : //webcache.googleusercontent.com/search? q=cache: http : //en.gentoo-wiki.com/wiki/Active_Directory_Authentication_using_LDAP
您是否檢查過SSL證書錯誤? 您使用的是自簽名證書還是正式證書?
“如果你正在使用SSL(如LDAPS)和的ldap_bind拋出‘無法綁定到服務器:’錯誤,請檢查在ldap_connect使用的主機名的SSL證書中相匹配的‘CN’的LDAP服務器” 來源
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.