【问题标题】:Spring Security based authentication for a REST serviceREST 服务的基于 Spring Security 的身份验证
【发布时间】:2011-08-16 21:05:43
【问题描述】:

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

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

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

这是它的要点,不是为了问题:

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

感谢任何反馈。 谢谢。

【问题讨论】:

    标签: authentication rest spring-security


    【解决方案1】:

    一般来说,如果你想自定义你的身份验证,你应该使用 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。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2016-03-20
      • 2021-01-27
      • 2016-04-30
      • 2017-07-08
      • 2016-04-02
      • 2017-04-07
      • 2013-05-13
      • 2017-07-10
      • 2016-03-03
      相关资源
      最近更新 更多