试图了解CakePHP cookies&认证

时间:2011-09-29 18:50:19

标签: cakephp authentication cookies session-cookies session-hijacking

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

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

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

  1. 检查传入的报告请求并提取CakePHP站点使用的cookie以进行身份​​验证/会话识别
  2. 将来自Java函数的请求发送到CakePHP站点内的“reportauth”操作,并附上此cookie
  3. CakePHP中的reportauth操作然后检查用户是否登录到CakePHP站点并返回加密响应以识别用户角色的Java函数
  4. 我可以获取cookie,在请求中发送它,并且我可以单独在PHP和Java之间共享加密信息。

    但是,当我在Java请求中使用“新鲜”cookie(我的浏览器重复发送的cookie以及新登录后对CakePHP站点的请求)时,响应表明用户未登录。如果我然后在我的浏览器中重新加载该网站,我已经注销。我怀疑cookie中可能存在一些关于user-agent(?)的额外信息,这些信息会导致Java源请求被抛出并且会话被破坏以保证安全,但我不太了解系统。我想我可能会看到CakePHP防止会话劫持(通常会让我开心)。

    有人能告诉我是否有办法解决这个问题?最好不要将CakePHP中的自定义身份验证组件作为数据收集站点,但我的报告截止日期并不遥远。

    任何帮助都非常感激。

1 个答案:

答案 0 :(得分:1)

一种解决方法:

获取CakePHP将随机令牌存储在单独的cookie中,并作为用户表中的字段存储。

然后让Java应用程序获取令牌,并将其发送到cakephp应用程序以获取用户的详细信息。

或者,让它使用CakePHP应用程序本身进行身份验证,并传递session id以使蛋糕使用正确的会话。注意,需要在调用session_start()之前完成使用该函数的设置。