2011-05-11 113 views
2

我正在使用LDAP-Active Directory爲我的項目驗證用戶身份。過濾LDAP用戶的最佳方法

我目前有2個登錄頁面--1個用於學生,另一個用於工作人員。

我已經設法編寫一個認證腳本來綁定到LDAP服務器 - 這適用於存儲在LDAP服務器上的所有用戶。

現在我希望能夠過濾出員工的學生,只允許員工通過「員工登錄頁面」登錄。

的DN看起來像下面這樣:

cn=USERNAME,ou=DEPT,ou=MAS,ou=LAN,o=UNI <-- STAFF 
cn=USERNAME,ou=DEPT,ou=STUDENT,ou=LAN,o=UNI <-- STUDENT 

我怎麼能去篩選出OU =學生或東西,從能夠通過新的工作人員驗證腳本登錄停止學生呢?

三江源

回答

2

爲了防止學生從能夠通過新的工作人員驗證腳本登錄,你可以改變你的基地LDAP搜索。儘管在整個目錄中都搜索UPN,但您可以從ou=MAS,ou=LAN,o=UNI中搜索UPN。

隨着LDIFDE.EXE它會給:

LDIFDE -fc:\ TEMP \ user.ldf -d 「OU = MAS,OU = LAN,O = UNI」 -R 「(的UserPrincipalName =登錄)」

因此,如果用戶是學生,搜索不會返回任何內容。

在絕對LDAP上,它存在一個名爲ExtensibleMatch的過濾器語法,它允許您這樣做,但它在AD中工作。

+0

請原諒我,我不是很熟悉LDIFDE.exe,事實上我從來沒有用過它。你說的是,如果改變我搜索的基礎,那麼不是搜索「ou = LAN,o = UNI」,而是搜索「ou = MAS,ou = LAN,o = UNI」? – 2011-05-11 20:48:17

+0

目前,你如何獲得認證的人的DN?我假設他在一個表單中給他的登錄名(userPrincipalName),並在目錄中進行搜索以找到該對象。您可以根據登錄頁面從不同的地方開始搜索。 – JPBlanc 2011-05-12 03:27:37

+0

目前,我正在使用提供的用戶名執行與LDAP服務器的自治綁定,然後返回如上所示的可分辨名稱。我然後試圖再次綁定返回的DN和密碼。 正如我說的,即時通訊使用此作爲起點: $ dn =「ou = LAN,o = UNI」;我可以爲我的目錄搜索做ou = MAS,ou = LAN,o = UNI嗎? – 2011-05-12 14:58:14