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

时间:2011-05-02 09:56:11

标签: authentication rest spring-security

我正在使用Spring MVC和Spring Security(均为3.0.5)实现REST服务。我正在使用安全命名空间而不是手动定义Spring bean。 我在登录过程中遇到了一些困难。我想要实现的是:

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

应该没有实际的表单,所以我没有使用 form-login ... 元素。如果没有这个元素,安全链上就不会出现 UsernamePasswordAuthenticationFilter ,所以我想我会通过 custom-filter ... 元素添加它,然后继续那里。

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

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

感谢任何反馈。 谢谢。

1 个答案:

答案 0 :(得分:2)

通常,如果要自定义身份验证,则应使用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。

我希望它有所帮助。