0

我正在尝试找出 CakePHP cookie 并满足我稍微不寻常的身份验证要求。

我有一个基于 CakePHP 的数据收集系统,现在它正在与一个用 COTS 软件构建的报告系统集成。报告系统需要进行访问控制,除非我想复制两个系统中的所有用户帐户,否则我需要报告系统能够确定用户是否在我的 CakePHP 系统中进行了身份验证。

报告系统允许我在客户端的报告请求第一次到达时加载一个 Java 类并执行一个函数。所以我的想法是

  1. 检查传入的报告请求并提取我的 CakePHP 站点用于身份验证/会话识别的 cookie
  2. 从 Java 函数向带有此 cookie 的 CakePHP 站点中的“reportauth”操作发送请求
  3. CakePHP 中的 reportauth 操作然后检查用户是否登录到 CakePHP 站点,并将加密响应返回给标识用户角色的 Java 函数

我可以获取 cookie,在请求中发送它,然后我可以分别在 PHP 和 Java 之间共享加密信息。

但是,当我在我的 Java 请求中使用“新”cookie(我的浏览器在新登录后重复向 CakePHP 站点发送请求的 cookie)时,响应显示用户未登录。如果然后我在浏览器中重新加载该站点,则我已注销。我怀疑 cookie 中可能有一些关于用户代理 (?) 的额外信息会导致 Java 来源的请求被抛出并且该会话为了安全而被破坏,但我对系统不够了解。我想我可能会看到 CakePHP 可以防止会话劫持(这通常会让我很高兴)。

谁能告诉我是否有办法解决这个问题?最好是不涉及 CakePHP 中的自定义身份验证组件,因为数据收集站点已经上线,而且我的报告截止日期不远了。

非常感谢任何帮助。

4

1 回答 1

1

One workaround:

Get CakePHP to store a random token in a separate cookie, and as a field in the user table.

Then get the Java application to grab the token, and send it to the cakephp application to get the user's details.

Alternatively, have it authenticate with the CakePHP app itself, and pass in the session id to have cake use the right session. Note, setting with that function needs to be done before session_start() is called.

于 2011-09-30T09:46:44.920 回答