2011-07-17 116 views
1

我有這樣的代碼:添加用戶:LDAP

function makeUser() { 
    $info['cn'] = "Test User"; 
    $info['sn'] = "User"; 
    $info['mail'] = "[email protected]"; 
    $info['objectclass'][0] = "Person"; 
    $info['objectclass'][1] = "User"; 

    $info['userpassword'] = "{MD5}".base64_encode(pack("H*",md5('Password1!'))); 
    $info['useraccountcontrol'] = 512; 

    var_dump(ldap_add($this->connection, "CN=Test User,OU=Users,DC=domain,DC=local", $info)); 
} 

這給了我這個錯誤:當我離開了$info['useraccountcontrol'] = 512;部分

Warning: ldap_add() [function.ldap-add]: Add: Server is unwilling to perform

,它增加了帳戶,但它是禁用..

我得到這個從日誌兩臺服務器上:

Internal event: The LDAP server returned an error.

Additional Data Error value: 0000052D: SvcErr: DSID-031A11E5, problem 5003 (WILL_NOT_PERFORM), data 0

,我的工作:

  • Windows Server 2008中的Active Directory(未R2)&的Windows Server 2003
  • PHP 5.3.5
  • 普通LDAP連接,而不是LDAPS因爲我已經放棄努力拿到工作..

我怎樣才能得到它像這樣,該用戶禁止並且必須更改密碼第一次登錄時?

+0

LDAP服務器在其日誌中說明拒絕您的操作的原因是什麼? – Wrikken

+0

嗯,我似乎無法找到任何地方的日誌.. – Sander

+0

嗯,我會修復第一個:) – Wrikken

回答

2

至於活動目錄而言,密碼不在'userpassword'中,而是在'unicodePwd'中,您在this other Stckoverflow question中有一個示例。我認爲你需要使用LDAPS。

+0

它確實是關於使用LDAPS,但設置SSL不是選項。通過使用Windows'COM'函數來設置密碼併爲我重新啓用帳戶。 – Sander

+0

您可以添加COM解決方案的答案。我認爲你會取得成功,因爲這個問題會迴歸。 – JPBlanc

5

我也有這個問題(即使通過LDAPS連接)。當我通過三個步驟完成時(首先添加帳戶,然後設置密碼,然後啓用帳戶),它工作。

這可能是你可以結合前兩步或後兩步,但我沒有測試這個。