2014-05-02 28 views
2

我需要對組織LDAP實施liferay身份驗證。一旦用戶成功登錄,我希望用戶對照在liferay中創建的本地組進行檢查。Liferay授權

例如,某些團隊中的用戶應該只能進入應用程序。由於LDAP中沒有任何內容將LDAP中的這些用戶與其他用戶區分開來,所以我需要在liferay中本地實現某些內容。

當用戶登錄時,應對LDAP進行身份驗證,然後查找本地liferay組以檢查用戶是否屬於該組。應該由liferay admin配置此組。只有當他/她是該組的一部分時,應該顯示具有數據的應用程序的主頁。

任何指針都會幫助。謝謝。

回答

3

以下是我已經明白:

  1. 用戶存儲在LDAP。
  2. 用戶未在LDAP中分類。沒有ldap組存在。
  3. 因此,當您針對LDAP進行身份驗證時,LDAP中的所有用戶都將登錄到Liferay。
  4. 但是你想要的是,只有那些屬於Liferay中某個組的用戶才能登錄,而其他用戶則不能登錄。

如果這是你想要的,然後這裏有我的幾個要點:

  1. 最好的事情就是讓自己groups in LDAP。在維護方面,這將會更好,因爲身份驗證已經通過LDAP進行。這裏是你如何可以leverage Liferay with LDAP groups。當然,如果你採用這種方法,你需要通過LDAP管理員或jExplorer等LDAP客戶端手動將用戶分配給每個組。
  2. 但是,如果這是不可能的,那麼您可以通過OrganizationsUserGroups將用戶分組,也可以將liferay中的Site (with or without pages)分組。
  3. 從LDAP驗證成功後,您可以檢查特定用戶是否屬於所需的組織或用戶組或站點。您可以使用LoginPostAction hook來達到此目的。
  4. 如果用戶不是所需組的成員,那麼您可以將他從系統中註銷,並按照您的要求將其重定向到登錄頁面或其他頁面。
  5. 您也可以擁有一個掛鉤來防止更新和刪除UserGroup或組織或站點,以便管理員不會意外刪除或更新可能導致身份驗證失敗的相關組。

希望這可以幫助,讓我知道,如果我所瞭解的是正確的。

+0

是的,你的低調是正確的。正如你所說,在指針部分的第一件事是不可能的。我已經理解了第二點和第三點。你能分享一些在線資源,給出第二點和第三點的一些例子嗎?以及如何指定任何用戶作爲admin.Thanks提前! – manni

+0

我已經用鏈接編輯了我的答案。 liferay中有一個管理員角色,您可以將其分配給用戶,並且用戶可以在門戶中執行任何操作,默認情況下,test @ liferay.com是Admin用戶。我建議你通過Liferay的用戶指南來了解liferay中userGroup,site和Organization的概念。 –

+0

謝謝它有幫助。 – manni

0

有一點要記住的是,Liferay源中已有一個LDAP Authenticator類LDAPauth

如果您想登錄到[email protected],可以將其添加到您的LDAP中。 (我意識到這可能會破壞使用LDAP的要求)。 爲您自己/組織(在LDAP和Liferay中)創建一個特殊的管理員帳戶也很常見。只需恢復到標準Liferay身份驗證,登錄到您的test @ liferay。com默認管理員,並確保該用戶的Liferay版本具有正確的GLOBAL管理員角色。

另外, 您可以在您的Liferay認證管道中添加多個認證。

我假設你已經添加到portal-ext.properties(或鉤屬性覆蓋)以下行:

auth.pipeline.pre=com.YourLDAPAuthenticator 

您還可能有這樣一行:

auth.pipeline.enable.liferay.check=false 

你可以保持Liferay檢查(設置爲true),並且您可以使用Liferay憑證爲您的默認管理員登錄,但如果您未同步Liferay和LDAP密碼 - 對於所有其他用戶,則不推薦這樣做。

在您的自定義Authenticator authenticateBy *()覆蓋中,您可以通過編程方式檢查當前用戶嘗試登錄,並且您可以從Liferay中檢索用戶(UserLocalServiceUtil)並執行一些自定義檢查, )您不想存儲在LDAP中的用戶。