Tomcat 在从 Google OAuth 2.0 API 重定向后创建一个新会话。为什么?

问题描述 投票:0回答:1

我正在 Tomcat 中实现 Google 的 OpenID Connect (OAuth 2.0)。

第一步是

  1. 创建防伪状态令牌

我这样做了,并认为我可以将其存储为 Tomcat HttpSession 对象“session”中的属性。

但是在 Google 重定向到我的重定向 URI(在同一 Tomcat 服务器上)之后,Tomcat 已为此 HTTP Get 创建了一个 new 会话对象。

我已查看但找不到此行为的解释。我原以为原始会话对象可以通过重定向 GET 访问。

流程是:

从我的 Tomcat 获取 login.jsp;在会话中存储防伪令牌此页面有一个通过 Google 登录的按钮

按下按钮

GET accounts.google.com 返回一个 302,其中包含我的 redirect.jsp 的位置

从我的Tomcat获取redirect.jsp;显示会话中的所有属性——没有属性

我期望防伪令牌位于会话对象中。

我正在考虑将防伪令牌存储在文件系统中,根据重定向时间检查创建日期,并根据原始请求检查重定向的 request.getRemoteAddr 作为使用会话的替代方法。

tomcat oauth-2.0 antiforgerytoken google-openidconnect
1个回答
0
投票

我相信问题可能在于您对 XSRF 令牌的理解。它们是一次性的;当 Web 应用程序收到您提交的表单数据时,它将验证令牌,然后将其丢弃。除了一次表单提交之外,它不会持续存在。如果您将其保留在会话中,恶意用户可能会尝试在另一个页面上激活该表单,从而破坏令牌的用途。

© www.soinside.com 2019 - 2024. All rights reserved.