小编min*_*int的帖子

防止未经授权的http请求重定向到/错误设置会话cookie - spring boot - spring security

语境

我的申请遇到了一些问题。我们使用 Spring Boot 2.4.10 和 Spring Security 5.4.8。我们使用 cookie 与应用程序交互。

我们有一个存储在src/main/resources其中的前端应用程序,其中包括连接到/api/v1/notification.

我的配置

application.properties文件:

# cookie-related settings
server.servlet.session.cookie.name=mySessionCookie
server.servlet.session.cookie.path=/
server.servlet.session.cookie.http-only=true
server.servlet.session.cookie.secure=true
Run Code Online (Sandbox Code Playgroud)
# cookie-related settings
server.servlet.session.cookie.name=mySessionCookie
server.servlet.session.cookie.path=/
server.servlet.session.cookie.http-only=true
server.servlet.session.cookie.secure=true
Run Code Online (Sandbox Code Playgroud)

问题

当没有用户登录时,前端会尝试定期访问 websocket 端点以打开连接。

第一个api/v1/notification结束重定向到/error端点,该端点返回HttpServletResponse带有“Set-Cookie”标头(我认为这可能是在第一个请求中设置的匿名 cookie?)和401状态。我无法改变这种行为。

以下请求api/v1/notification在标头中使用此 cookie(当用户未登录时)。这些请求也会重定向到/error端点,该端点每次都会返回HttpServletResponse401状态,但这里不包含“Set-Cookie”标头。

用户使用授权标头登录后,响应将设置正确的 cookie 并在以下请求中使用。

问题是,有时设置的 cookie 会突然再次更改为无效 cookie,并且使用此新的无效 cookie 完成的后续请求会重定向到登录页面。

检查代码后,似乎发生了一个旧api/v1/notification请求(在登录请求之前),其中包含无效的 cookie(匿名请求,在登录之前存在)。

该请求被重定向到/error端点:这里再次HttpServletResponse出现401状态,并且包含一个 Set-Cookie …

java spring-security unauthorized session-cookies spring-boot

7
推荐指数
1
解决办法
1277
查看次数