2011-05-02 52 views
4

我正在使用Spring MVC和Spring Security(都是3.0.5)实现REST服务。我正在使用安全性名称空间而不是手工定义Spring bean。 我在登录过程中遇到了一些困难。我试图达到的是:基于Spring安全的REST服务认证

POST到一个/登录URL将开始认证过程。

应该没有实际的表格,所以我没有使用表单登录...元素。没有这个元素,UsernamePasswordAuthenticationFilter没有出现在安全链上,所以我想我会通过一个定制过滤器...元素并从那里继续添加它。

这是它的精神,而不是问题:

  • 这是实现认证的好办法?
  • 我应该如何添加此滤镜以及滤镜链中的位置?
  • 添加此过滤器还是需要别的东西?

任何反馈意见。 谢谢。

回答

2

一般来说,如果你想定制你的认证,你应该使用bean配置。我发现基于命名空间的配置仅适用于演示应用。这里是我对你的问题的回答:

1)如上所述,你应该使用bean。检查这篇文章的更多信息: 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。

我希望它有帮助。