2012-05-24 90 views
1

有沒有辦法強制我的Java EE應用程序使用j_security_check進行身份驗證,但沒有授權?我想通過獨立的LDAP存儲庫進行身份驗證,但我想在我的應用程序中執行編程授權。使用j_security_check進行身份驗證但不授權(在Websphere中)

具體而言,我不想在Websphere Application Server管理控制檯中對授權(用戶角色映射到組)進行任何配置。

例如:

  1. 用戶登錄與用戶「user1」和密碼「密碼1」,這是正確的
  2. 的Websphere發現在LDAP這個人,知道他們是誰,他們說他們是(認證)
  3. 我從文件檢查文件系統上,如果該用戶有權限(授權)

回答

2

我建議爲此使用Spring Security。我們在WebSphere中實現了這種確切的模式。訣竅是使用Spring Security提供的預認證機制,然後僅定義配置中的授權規則。

<http> 
    <session-management session-fixation-protection="none"/> 
    <custom-filter position="PRE_AUTH_FILTER" ref="preAuthenticationFilter"/> 
    <intercept-url pattern="/j_security_check" filters="none"/> 
    <intercept-url pattern="/ibm_security_logout" filters="none"/> 
    <!-- put authorization intercept-url elements here... --> 
</http> 

你必須定義一些其他豆類爲好,如預認證過濾器和一個自定義的切入點,但在這裏記載:http://static.springsource.org/spring-security/site/docs/3.0.x/reference/preauth.html

+0

我想Spring Security是要走的路,但我無法找到正確的文檔入口點。感謝您的參考! – Nick

+0

不客氣。讓我知道是否需要填寫更多的例子,當然你也可以編輯答案。就像我說的,有一些外圍的東西你必須做(Spring配置)和web.xml文件(用於Java EE認證部分)。 –

1

看一看春季安全。認證和授權的概念是分開的。

身份驗證由AuthenticationProvider處理(一個LdapAuthenticationProvider實現是spring的一部分)。身份驗證提供程序委託獲取用戶的詳細信息,其中包括可代表用戶權限的GrantedAuthority對象列表。

LdapAuthenticationProvider默認情況下會嘗試從目錄獲得授權,因此您需要提供自己的LdapAuthoritiesPopulator實現,該實現從文件系統加載。

+0

感謝您的回答。我把勝利推給了另一個職位,以獲得更全面的參考資料。 – Nick

1

Java EE安全性也可以拆分。這取決於你的容器的實現。 既然你提到websphere this document可能是有趣的。

相關問題