gpt4 book ai didi

java - 如何使基于 Spring 的应用程序使用 jsessionid URL 参数

转载 作者:行者123 更新时间:2023-11-30 09:40:33 27 4
gpt4 key购买 nike

我们有带有 REST API 的应用程序。它基于Spring,也使用了Spring Security。例如,我们配置了一些基于角色的限制:

<sec:http auto-config="true" access-decision-manager-ref="accessDecisionManager">
<sec:intercept-url pattern="/auth/authenticate" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<sec:intercept-url pattern="/auth/logout" access="IS_AUTHENTICATED_FULLY"/>
<sec:intercept-url pattern="/users/**" access="USER"/>
</sec:http>

它可以很好地处理 cookie,但现在我们需要启用将 jsessionid 作为 URL 参数而不是 cookie 传递的可能性。我以为我们不需要更改代码中的任何内容,但出了点问题。我请求/login 方法并从响应中复制 jsessionid。之后我尝试请求/users;jsessionid=* 并得到 401 状态码,这意味着应用程序没有识别出我。为了使这种方法起作用,我们应该改变什么?

最佳答案

通常,基于 cookie 的身份验证系统不适合基于 XML 的 API(如 SOAP 和 REST)。实践是在每次 API 调用时进行身份验证。

检查 this在同一个论坛发帖。引用帖子:

A REST service is generally authenticated on each and every request, not normally by a session.

现在的原因是

  • 这些基于 xml 的 API 的客户端或消费者不是浏览器,而是其他应用程序。
  • 浏览器理解 cookie,事实上 cookie 是针对基于浏览器的用户而非一般应用程序。
  • 客户可能理解也可能不理解 cookie,并且在大多数情况下不会理解,因为 Cookie 不是对这些类型的 API 进行身份验证的标准方法。

有比以非标准 cookie 方式处理此问题更好的方法。不确定您使用的是哪个版本的 spring-security,HERE是用于保护 RESTful 应用程序的 spring-security 3.1 示例。

编辑:

查看 this link .这会强制 tomcat(不确定您是否使用 tomcat)不使用 cookie 处理 session 。但是一旦完成,这将不会处理基于 cookie 的 session 。我不是 100% 确定它会起作用,您仍然可以尝试。

关于java - 如何使基于 Spring 的应用程序使用 jsessionid URL 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9360768/

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