2011-03-15 29 views
0

我是Spring Security的新用戶。Spring安全:添加支持IP認證的新ROLE

我之前配置了Spring Security來爲我的web應用程序執行基於表單的身份驗證。

我已經使用Annotations來指示哪些控制器/方法需要ROLE_USER vs匿名,並實現了我自己的daoAuthenticationProvider來執行身份驗證。

我是現在正在實施REST服務,需要對BasicAuthentication進行身份驗證+對我的數據庫執行IP驗證。

因此,我在REST服務控制器上定義了一個新角色ROLE_IP_AUTH。

我現在只是有點不知所措。有人能給我一個簡要的描述,我應該採取什麼下一步?

  • 我需要創建一個新的 <安全:HTTP >元素爲新 作用?
  • 我應該切換到這個 FilterChainProxy?如果有,我應該包括哪些過濾器 ?
  • 我應該在現有的daoAuthenticationProvider類中處理這個問題嗎?

基本上我只需要知道我要進入什麼方向。我認爲我足夠了解如何到達那裏,只有5種不同的方式可以在Spring中找到任何地方。


其他信息 我目前實現了配置的元件如下:

<security:http auto-config="false" 
       entry-point-ref="authenticationEntryPoint" > 
    <security:logout logout-url="/logout" /> 
    <security:anonymous enabled="false"/> 
    <security:custom-filter position="FORM_LOGIN_FILTER" ref="usernamePasswordAuthenticationFilter" /> 
    <security:custom-filter position="ANONYMOUS_FILTER" ref="anonymousAuthFilter" /> 
</security:http> 

我剩下的問題是我怎麼能實現自己的IP的驗證。我可以使用自定義過濾器添加BasicAuth過濾器,並實現我自己的基本身份驗證過濾器來檢查IP。但是,我對如何使該過濾器僅適用於REST服務正在使用的ROLE_IP_AUTH的問題非常模糊?

回答

1

@Ritesh的回答對以不同方式重新構建這個任務非常有幫助。解決此問題的另一個偉大的職位是在這裏:

Spring security - how to mention both form based and basic authentication

最終我的理解是:做它通過選民@Ritesh建議在3.0.x中,或使用多個< HTTP .../>要素是現在可以在3.1.0.RC1(17mar2011的版本)中找到,如上面的鏈接所述。

0

您可以將http-basic添加到您的元素中。

<sec:http-basic/> 

還要添加create-session =「never」,因爲您不會爲REST服務添加會話。將你的服務擴展到一個特殊的URL模式將有助於你的工作。

<sec:intercept-url pattern="/service/**" access="ROLE_IP_AUTH" /> 
+0

我添加了一些額外的澄清信息。在理解我如何從表單過濾器中的ROLE_USER對BasicAuth過濾器中被認證的ROLE_IP_AUTH進行分段以及如果我沒有在某個地方定義它的情況下知道如何使用spring,我仍然有點模糊。 – 2011-03-15 13:16:30

+0

您可以添加一個自定義的'AuthenticationProvider'來根據認證添加角色,或者如果您想使用登錄但希望使用不同的角色,則可以使用自定義'SessionAuthenticationStrategy'在登錄後根據ServletPath。 – 2011-03-15 14:02:05

+1

@David Parks PhilippHügelmeyer的答案似乎是提供基於URL的訪問。請參閱Spring Receipe(第2版)的第201頁,網址爲http://books.google.com/books?id=IK2SMsT6XLYC&pg=PA201&lpg=PA201。在那個例子中,聲明瞭IP_LOCAL_HOST角色來調用Voter並且它沒有被分配給用戶。如果您想將決策委託給AccessDecionManager,而不是將新角色分配給用戶,則選舉器解決方案將起作用。這種方法可能適用於您,您可以在Voter中進行驗證後授予ROLE_USER。 – Ritesh 2011-03-15 15:11:39