2012-08-23 27 views
0

我正在爲一所大學開展一個項目。大學要求所有使用登錄/信息的人都要存儲在LDAP中,並通過PHP進行檢索。通常我只是將LDAP連接與用戶輸入的憑證(所以個人用戶的用戶名和密碼)綁定在一起,但是現在我需要使用LDAP對他們的usernmae/password進行身份驗證,然後將連接重新綁定到「授權帳戶「部門提供的用戶名和密碼,然後從已認證的帳戶執行LDAP搜索。如何使用授權帳戶重新綁定到LDAP?

基本上我需要使用用戶的登錄名/密碼才能確保它們存在於LDAP中。如果是,那麼我們必須切換到不同的帳戶用戶名/密碼來執行LDAP搜索用戶的信息。

我該怎麼做?我不知道如何以這種方式重新綁定,但仍然對用戶執行正確的搜索。

編輯:正在重新綁定LDAP帳戶,就像在第一個綁定語句之後包含第二個綁定語句一樣簡單?前;

if (!([email protected]_bind($connect, "uid=".$username.",ou=*****,dc=***,dc=edu", "$password"))) 
{ 
    ldap_close($connect); 
    echo "there was an error binding your LDAP account."; 
} 
else // else we have binded to the ldap connection as the user, we must re-bind as the authorized account 
{ 
    if (!([email protected]_bind($connect, "uid=".$authUN.",ou=******,dc=***,dc=edu", "$authPW"))) 
    { 
      ldap_close($connect); 
      echo "There was a problem binding to the authorized account."; 
    } 
    else // now we have binded with the authenticated account 
    { 
     echo "success!"; 
    } 
}  

..和然後我只想通過ldap_search()執行搜索是否正常?

+0

是的,第二個綁定是重新綁定。這當然很明顯? – EJP

回答

2
  • 有沒有這樣的事情,'重新綁定'。僅存在BIND
  • 的連接與匿名認證狀態
  • 每個BIND請求連接狀態復位爲匿名狀態
  • 每次成功BIND將連接狀態與所述認證用ID相關聯的授權狀態開始
  • 甲未能在連接BIND請求結果保持匿名狀態

BIND的語義在RFC4513充分的描述。

+1

+1。另外,還沒有從配置完善的LDAP中「檢索密碼」這樣的事情。綁定操作的目的是驗證用戶。因爲您的任務似乎需要,所以沒有必要實施兩次或三次。有人不瞭解LDAP,或者確實是基本的安全。通常的技術是使用預定義的系統帳戶搜索用戶,然後以該用戶的身份綁定所有後續操作。 – EJP

+0

謝謝你的幫助。 – Prefix

0

爲什麼你不只是用授權的帳戶搜索用戶信息,如果它存在返回它,如果不只是忽略它?

+0

這基本上就是我想要做的。每個學生都需要學生帳戶登錄,但是一旦他們通過了認證,「授權」帳戶就會接管並執行搜索。用戶只需要能夠獲得有關他們自己的信息,因此身份驗證就是一個保障。但是,我很可能完全不理解LDAP :) – Prefix