我是Spring Security的新用户。
我之前配置了Spring Security,以便为我的网络应用程序执行基于表单的身份验证。
我使用Annotations来指示哪些控制器/方法需要ROLE_USER与匿名,并实现了我自己的daoAuthenticationProvider来执行身份验证。
我现在正在实施REST 服务,需要在BasicAuthentication上进行身份验证+对我的数据库进行IP验证。
所以我在REST服务控制器上定义了一个新角色ROLE_IP_AUTH。
此时我只是有点不知所措。有人能给我一个简短的描述我应该采取的下一步措施吗?
基本上我只需要知道我要去的方向。我想我已经足够了解到达目的地,只有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模糊不清?
答案 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" />