我是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的問題非常模糊?
我添加了一些額外的澄清信息。在理解我如何從表單過濾器中的ROLE_USER對BasicAuth過濾器中被認證的ROLE_IP_AUTH進行分段以及如果我沒有在某個地方定義它的情況下知道如何使用spring,我仍然有點模糊。 – 2011-03-15 13:16:30
您可以添加一個自定義的'AuthenticationProvider'來根據認證添加角色,或者如果您想使用登錄但希望使用不同的角色,則可以使用自定義'SessionAuthenticationStrategy'在登錄後根據ServletPath。 – 2011-03-15 14:02:05
@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