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

标签 authentication rest spring-security

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

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

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

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

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

  • 任何反馈表示赞赏。
    谢谢。

    最佳答案

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

    我希望它有帮助。

    关于authentication - REST 服务的基于 Spring Security 的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5855752/

    相关文章:

    java - 使用动态生成的内容时通过浏览器保存登录密码

    android - 如何在 Android 中从 AsyncTask 实现 Web 服务连接?

    java - 如何在不发送另一个身份验证请求的情况下保持来自跨源(CORS)Spring security的登录 session

    java - Spring Security 注解的排序

    Azure Powershell - 自动化登录-AzureRmAccount AD 登录 - 用于 Azure 功能

    c - 如何在 macOS 上检查密码?

    rest - 使用 springfox Swagger 自定义文档的端点

    java - 使用 JSP 作为 View 引擎注销的 Spring Boot 安全性不起作用

    authentication - Blazor 服务器无法访问具有 [Authorize] 属性的 Controller

    javascript - JavaScript 中 REST API 客户端库的好例子有哪些