2009-02-19 43 views
5

我對在基於Java的Web應用程序中使用LDAP身份驗證的最佳實踐感興趣。在我的應用程序中,我不想存儲用戶名\密碼,只有一些ID。但是如果LDAP目錄中存在任何信息,我想檢索附加信息(名稱,姓氏)。LDAP最佳實踐

回答

6

我的團隊使用LDAP作爲標準認證方式。基本上,我們將LDAP視爲任何其他數據庫。

要將用戶添加到應用程序,您必須從LDAP中選擇一個或在LDAP中創建它;當用戶從應用程序中刪除時,它保留在LDAP中,但無法訪問應用程序。

您基本上只需要在本地存儲LDAP用戶名。您可以每次從LDAP讀取LDAP數據(電子郵件,部門等),或者以某種方式從應用程序中讀取LDAP數據(儘管從LDAP讀取數據可能更簡單,更智能,因爲LDAP數據可能會更改。當然,如果您需要廣泛報告或使用LDAP數據,您可能需要從LDAP中手動或通過批處理任務進行提取。

好的一點是,一旦用戶在LDAP中被禁用,它將一次在所有應用程序中被禁用;另外,用戶在所有應用程序中都具有相同的憑據在企業環境中,通過一系列內部應用程序,這是一大優勢。不要僅爲一個應用程序的用戶使用LDAP;在這種情況下沒有真正的好處。

1

如果您有多個基於Web的應用程序並希望使用LDAP身份驗證,那麼預先打包的單點登錄解決方案可能會比創建您自己的LDAP身份驗證更好。 CAS支持LDAP身份驗證,並可以撤回您的應用程序所需的數據。

在我的大學裏,我們實際上已經實施CAS作爲對抗Active Directory服務器的單一標誌。我們還利用CAS來驗證我們的J2EE應用程序,並正在使用CAS來驗證我們的PHP應用程序。

我們使用AD來保存域的用戶。有一些基於用戶類型的OU。每個用戶都有一個唯一的ID,恰好是他們的學生/員工ID,因此應用程序可以將其用作其數據庫中的主鍵。我們爲PHP應用程序提供了數據庫驅動的授權方法。 J2EE應用程序的授權來​​自LDAP中的值。

祝您的應用程序順利。

0

那麼,您希望用戶只輸入ID,然後從LDAP中獲取其他信息?這很容易。

  1. 創建LdapInitial上下文和連接到LDAP
  2. 執行搜索的ID(它應被存儲爲一些屬性值) - 例如(&(用戶ID =約翰)(objectClass的=用戶)) - 這意味着 「用戶ID =約翰和對象類=用戶」
  3. 信息搜索結果對象將包含所有屬性(或者你問的那些)

一些LDAP實現(着名的MS ActiveDirectory LDAP)不允許您與匿名用戶連接。對於那些你需要有一個技術用戶名/密碼來連接。

如上所述,當您有很多應用程序時,LDAP通常是有意義的。

P.S.感受一下LDAP是如何嘗試Apache Directory Studio的。

+0

不太如此!在我的應用程序數據庫中,我希望僅存儲來自LDAP的id和相關的DN。如果我需要關於用戶的其他信息,我可以使用DN – 2009-02-21 11:01:55

+0

從目錄中得到它,儘管它是重複的。但是你真的在問什麼? – 2009-02-22 13:37:57