Spring安全性:添加一个支持IP身份验证的新ROLE

时间:2011-03-15 10:04:35

标签: java spring-security

我是Spring Security的新用户。

我之前配置了Spring Security,以便为我的网络应用程序执行基于表单的身份验证。

我使用Annotations来指示哪些控制器/方法需要ROLE_USER与匿名,并实现了我自己的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模糊不清?

2 个答案:

答案 0 :(得分:1)

@Ritesh的回答非常有助于以不同的方式重新构建这个任务。另一个解决这个问题的好文章是:

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

最终我的理解是:通过@Ritesh在3.0.x中建议的选民来做,或者使用多个&lt; http ... /&gt;现在可以在3.1.0.RC1(17mar2011版本)中找到这些元素,如上面的链接所述。

答案 1 :(得分:0)

您只需在元素中添加http-basic即可。

<sec:http-basic/>

另外添加create-session =“never”会导致您不为REST服务添加会话。毛你对特殊网址模式的服务会有所帮助。

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