簡體   English   中英

PHP LDAP使用服務器的用戶帳戶綁定AD

[英]PHP LDAP binding AD with the server's user account

我有一些使用PHP和LDAP連接到AD的代碼:

$host = 'ldap://stack.overflow.com';
$port = 389;
$username = 'stackOverflow';
$password = 'IaMP4ssWord';
$dn = 'CN=Users, DC=STACK, DC=OVERFLOW, DC=COM';
$cond = '(&(objectcategory=user)(displayname=*))';//All users that have a displayname

if($ldap = ldap_connect($host, $port))
{
    if(ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3))
    {
        if(ldap_bind($ldap, $username, $password))
        {
            $attrs = array('displayname', 'mail');
            if($rs = ldap_search($ldap, $dn, $cond, $attrs))
            {
                $results = ldap_get_entries($ldap, $rs);
                echo "<pre>";print_r($result);echo "</pre>";//Print the results
            }
        }
        else
        { echo 'Binding failed';}
    }
    else
    { echo 'Setting options failed';}
}
else
{ echo 'Connection failed'; }

現在這段代碼可以正常工作了。 它打印出在AD中具有顯示名稱的每個用戶。 問題是用戶名/密碼綁定,我正在使用自己的用戶憑證綁定到服務器。

我想知道是否有使用服務器憑據進行綁定的方法。

我在Windows Server 2008 R2上使用PHP 5.3 + IIS設置了具有IIS的服務器和具有AD的服務器(兩個不同的VM)。

我也知道IIS有一個名為IISStackOverflow的AD帳戶,但是我不知道密碼,即使密碼也沒有。

謝謝!

哦! 我嘗試將$username更改$username IISStackOverflow並將$password''

但是它給出了無效的憑證錯誤。

- 編輯 -

我是否必須要做綁定部分? (如果我僅讀取數據)

從服務器本身運行它時,只要閱讀一下,我就會嘗試使用:

...
if(ldap_bind($ldap))
...

根據PHP文檔,如果未指定bind_rdn和bind_password,則嘗試進行匿名綁定。

然后,如果拒絕您的匿名登錄(不應該這樣,因為在服務器上的IIS下運行您的代碼至少是作為域用戶執行的),您將在此處找到如何啟用與Windows Server的匿名LDAP綁定 這曾經在W2K8上發揮作用,而Inever在W2K12上對其進行測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM