2014-03-27 55 views
1

我想用OpenAM + J2EE tomcat代理來保護Java servlet。我通過使用OpenAM的嵌入式OpenDJ獲得了這部分工作。如何在OpenAM中配置LDAP驗證模塊實例

現在我想對一個LDAP服務器進行身份驗證,所以我增加了一個LDAP模塊實例OpenAM,但我得到「用戶在該組織的任何資料」當我試圖從一個用戶的使用UID /密碼LDAP存儲。

我查看了OpenAM管理指南,對此的描述比較簡短。我想知道是否可以在不使用爲OpenAM配置的數據存儲的情況下執行此操作?基於認證鏈和個人認證模塊配置

  • 用戶配置文件查找
    • 驗證憑證通過配置LDAP認證:

    回答

    2

    在OpenAM登錄過程由兩個階段的您負責驗證部分的模塊,但是由於您尚未配置用戶數據存儲(請參閱數據存儲選項卡),因此配置文件查找失敗。配置數據存儲允許您在整個部署中公開更多的用戶詳細信息(例如,在SAML聲明中包含用戶屬性或將它們映射到帶有代理的HTTP標頭),因此在大多數情況下都需要配置數據存儲。

    如果您仍然不想配置數據存儲,則可以通過訪問控制 - > < realm> - >身份驗證 - >所有核心設置 - >用戶配置文件模式來防止用戶配置文件查找失敗並將其設置爲忽略。

    +0

    工作就像一個魅力,謝謝你的幫助,彼得。 – user3466814

    +1

    關閉用戶配置文件檢查後,我可以通過OpenAM對LDAP服務器進行身份驗證。 現在,接下來的問題是:如何在成功驗證後驗證用戶的組成員身份?假設我對其進行身份驗證的LDAP存儲擁有100萬用戶,並且我只想授予屬於具有我保護的資源的特定組的用戶的權限,並且這些用戶已經通過身份驗證。 沒有在OpenAM中配置數據存儲,這種授權可能嗎?如果是這樣,怎麼樣? – user3466814

    0

    這與身份驗證無關,但與授權有關......您必須配置適當的策略......請參閱OpenAM文檔。

    代理將執行授權,OpenAM確定用戶是否有權訪問受保護的資源。

    +0

    感謝Bernhard的解釋。我配置了J2EE策略並編輯了「主題」字段。我發現OpenAM實際上從我的LDAP目錄中檢索了組信息(OU = mygroup ...)。所以現在一切正常。 – user3466814

    0

    由於Bernhard指出認證只是授予用戶訪問權限的一部分。他指的是使用策略來控制訪問。

    另一種方法是以編程方式檢查經過身份驗證的用戶是否是所需組的成員。當您想要對OpenAM不知道的資源(例如特定數據)進行訪問控制時,這會很有用。

    例如,假設您希望不同的組訪問數據庫中的表中的不同行。您可以檢索與用戶關聯的組信息並將其添加到數據庫查詢中,從而限制返回的數據。

    我相信你可以用OpenAM來做到這一點,也可以使用自定義模塊來允許策略使用數據庫中的信息作爲資源,但是我發現在這個細粒度的訪問控制中執行起來要簡單得多你的代碼,並且很可能顯着更快。