gpt4 book ai didi

spring-mvc - Spring Security token 认证-RESTful JSON服务

转载 作者:行者123 更新时间:2023-12-03 11:28:40 24 4
gpt4 key购买 nike

我正在寻找将Spring Security用于Spring MVC应用程序,该应用程序将严格地是JSON Web服务。我已经进行了一些研究并阅读了几篇文章,但还没有真正找到完成的内容。我希望应用程序完全无状态,并使用基于 token 的身份验证。我不希望Spring MVC应用程序具有任何形式,也不希望使用形式进行身份验证。它应严格接受JSON中的请求和数据,并返回JSON响应。

将有一个Angular JS客户端应用程序,该应用程序将需要发送用户名和密码,并从该应用程序获取 token 以用于顺序请求。在某些时候,可能会有Android客户端也访问此Web服务。

我假设Spring Security在内部将 token 映射到用户 session ,这意味着它知道 token XXXXXXXXXXXX是管理员用户Bob, token AAAAAAAAAA是标准用户Joe。但是我对Spring Security没有太多的经验,所以我不知道这一切如何结合在一起。我仍然希望能够在 Controller 和服务方法上使用安全注释。

Spring Security中有没有办法做到这一点?

这个问题似乎是一个不错的起点,但是我不确定RESTful Authentication via Spring是可以实现的。

最佳答案

这是从Spring-Rest-Boilerplate开始的好地方。

  • 第一次您必须使用http基本身份验证和
    然后登录(发送用户名/密码),这将返回 token 。
  • 在后续请求中,您将使用此 token 进行身份验证。
  • 您将必须向该链中添加一个过滤器
    基于 token 的身份验证。

  • 您必须提供 token 格式和相同的加密。理想情况下,您还需要保留 token 的到期时间,到期时间和用户名一起可能是 token 的一部分。使用加密算法,像MD5这样的加密哈希函数并获取整个 token 的哈希值。

    编辑:正如MaciejStępyra指出的那样,MD5似乎已损坏,建议使用更强大的哈希函数(如SHA-256)。

    默认情况下,Spring安全会将您重定向到登录页面,但是在REST的情况下这没有意义,因此请在config中使用自定义 AuthenticationEntryPoint(引用示例github代码)。

    我为 token 使用了以下格式:
    token:username:hash:expiry

    hash = MD5(用户名+魔术键)

    到期时间=当前时间戳+分钟到到期时间
     <security:http realm="Protected API" use-expressions="true" auto-config="false" create-session="always" entry-point-ref="**CustomAuthenticationEntryPoint**">
    <security:custom-filter ref="**authenticationTokenProcessingFilter**" position="PRE_AUTH_FILTER" />
    <security:intercept-url pattern="/**" access="isAuthenticated()" />
    </security:http>

    注意:感谢 dhavaln 的代码。我已将此作为引用并开发了类似的东西。

    关于spring-mvc - Spring Security token 认证-RESTful JSON服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24150621/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com