与 SSL 和 mod_perl 共享的 Bugzilla 存在登录 cookie 问题

与 SSL 和 mod_perl 共享的 Bugzilla 存在登录 cookie 问题

我已经设法使用 PROJECT 变量设置了一个共享的 mod_perl Bugzilla 环境,并且它运行完美。

现在,我尝试在另一台服务器上执行相同的操作,使用相同的基本设置,只是共享 Bugzilla 的主机也运行 SSL。这意味着它们也有不同的唯一 IP 地址。

虽然第二个设置基本上可以正常工作,但我遇到了登录和 cookie 方面的问题。两个 Bugzilla 的登录相互干扰,导致重复登录提示和“密码错误”消息。显然,这在某些 Bugzilla 设置中相当常见,但请注意,我原来的共享 mod_perl Bugzilla(没有 SSL 的 Bugzilla)没有这个问题。

我相信 Bugzilla 默认共享 cookie,这大概就是问题的根源,而且我尝试使用 cookiepath 和 cookiedomain,但都没有成功。

有谁解决过这个问题吗?

附加:我正在运行 Bugzilla 4.4.4。Bugzilla1 是 bugs.domain1.com;其 cookiedomain 是 '',cookiepath 是 '/'。Bugzilla2 是 bugs.domain2.com;其 cookiedomain 是 '',cookiepath 是 '/'。

虽然通常在对 Bugzilla/mod_perl 设置进行更改时,我会重新启动 Apache 以允许更改生效,但我的理解是,当仅更改 params 文件(包括对 cookiedomain 和 cookiepath 的更改)时,这不是必需的(已确认)。

我尝试将两个 cookiedomain 值设置为“bugs.domain1.com/”和“bugs.domain2.com/”,但这导致根本没有创建任何 cookie。

我使用 LiveHTTPHeaders 观察与登录相关的 Bugzilla cookie 发生了什么。只要两个 Bugzilla 正常工作(没有虚假的登录提示),传递的 cookie 就是有意义的。登录前,Bugzilla_login_request_cookie 被设置为唯一值。登录后,Bugzilla_login_request_cookie 被有效清除,并设置两个新 cookie:Bugzilla_login 和 Bugzilla_logincookie。当其中一个 Bugzilla 突然再次提示登录时,虽然我看到 GET 标头中传递给服务器的 cookie 没有变化,但服务器返回以下内容:

Set-Cookie: Bugzilla_login_request_cookie=<new value>; path=/; secure; HttpOnly

某些因素导致 Bugzilla 认为用户不再登录,并且 Bugzilla 通过为 Bugzilla_login_request_cookie 设置新值来做出响应,从而再次触发登录过程。

更新:根据 Bugzilla 开发人员的建议,我已将此报告为错误(#1005931) 在 Bugzilla 错误跟踪系统(Bugzilla)中。

答案1

从您的补充报告来看,这听起来像是我们为防止登录页面 XSRF 而添加的新机制中的一个错误。请您将其提交至https://bugzilla.mozilla.org/? 谢谢 :-)

代码中只有一个地方设置了此 cookie - CGI.pm 第 314 行(在主干上)。并且只有当 Bugzilla 认为没有登录用户时才会设置。正如您所说,情况不应该如此。

格夫

相关内容