基于Spring Security的REST服务身份验证

我正在使用
Spring MVC和
Spring Security(均为3.0.5)实现REST服务.我正在使用安全命名空间而不是手动定义Spring bean.

我在登录过程中遇到了一些困难.我想要达到的目的是:

对/ login URL的POST将开始身份验证过程.

应该没有实际的表单,所以我没有使用form-login …元素.没有这个元素,安全链上不存在UsernamePasswordAuthenticationFilter,所以我想我会通过自定义过滤器…元素添加它并从那里继续.

这是它的要点,而不是问题:

>这是实现身份验证的好方法吗?
>我应该如何添加此过滤器以及过滤器链中的哪个位置?
>是否足以添加此过滤器或我是否还需要其他东西?

任何反馈都表示赞赏.
谢谢.

最佳答案 通常,如果要自定义身份验证,则应使用bean配置.我发现基于命名空间的配置仅适用于演示应用程序.以下是我对你问题的回答:

1)正如我上面所说,你应该使用豆子.查看此文章以获取更多信息:
http://blog.springsource.com/2010/03/06/behind-the-spring-security-namespace/
但是你所追求的东西也会起作用,满足你到目前为止提到的要求.
2)它应该像这样添加:
    < HTTP>
    < custom-filter position =“FORM_LOGIN_FILTER”ref =“myFilter”/>
    < / HTTP>
    < beans:bean id =“myFilter”class =“org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter”/>

3)请注意,此过滤器还将执行默认重定向到原始请求.因此,如果您不需要任何重定向,只需将简单的HTTP 200返回给客户端,您就应该实现自己的AuthenticationProcessingFilter.

我希望它有所帮助.

点赞