gpt4 book ai didi

java - 不使用 cookie 的 Spring Security session

转载 作者:搜寻专家 更新时间:2023-10-31 19:38:28 28 4
gpt4 key购买 nike

我正在使用 SpringMVC 从我们尝试连接的机器接收 HTTP 请求。来自机器的 XML 数据写入 HTTP 请求正文中。基本上,

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Foo version="2.0" xmlns="http://www.example.com/ns">
<Bar sessionId="2" />
<Baz quux="Monitor" seq="123">
...
</Baz>
</Foo>

机器不会,也不能保留cookies。所以我无法通过 JSESSIONID 使用 session 数据。我所拥有的只是在 Bar 中找到的 sessionId。这个 sessionId 应该由我的系统在第一次请求时授予。也就是说,

第一步:机器向我发送 session 请求

第 2 步:Web 应用程序创建一个 session ,然后向机器发送一个 session 类型的响应,然后在其中保存并在后续请求中使用。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Foo version="2.0" xmlns="http://www.example.com/ns">
<Bar sessionId="2" />
<Session quux="Monitor" seq="123">
...
</Session>
</Foo>

第 3 步:机器和网络应用之间的通信现在使用 sessionId。

问题:

  1. 在 Spring Security 中是否可以根据 sessionId 将 session 分配给连接?在这种情况下,XML 中的 sessionId 就像 cookie JSESSIONID。我能否配置 Spring Security,使其从 XML 而不是 HTTP header 或通过 URL 检索 sessionID?
  2. 我想知道其他系统是否有此类问题,以及我可以通过谷歌搜索哪些内容来对此类问题进行更多研究。

最佳答案

您正在寻找的当然是可能的。 HTTP Session 只是一个容器,用于在请求之间存储 Spring Security 身份验证 token 。您正在寻找的是在请求之间存储 token 并能够可靠地为每个请求检索 token 的地方。

在请求之间保存 token 的组件是 org.springframework.security.web.context.SecurityContextRepository 的一个实现。 Spring Security 提供的一种开箱即用的实现使用 HTTP session 作为 token 的存储区域。

同样,在每次请求时检查 token 的组件是 org.springframework.security.authentication.AuthenticationProvider 的实现。您至少需要实现这两者,以便在 HTTP session 之外对每个请求执行您的自定义策略来存储和检查身份验证 token 。

可以看看my sample app有关基于 REST 的应用程序的此策略的工作示例。我会建议您在 HTTP header 而不是请求正文中传递 session 信息。它将减少您的实现工作并显着简化解决方案。

关于java - 不使用 cookie 的 Spring Security session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25756730/

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