【问题标题】:Populating remote user in apache log files from PHP session从 PHP 会话中填充 apache 日志文件中的远程用户
【发布时间】:2011-10-14 09:58:06
【问题描述】:

我确实遇到了关于如何get a value into the log file from PHP 的描述,但是这可以通过设置任意环境变量并将其替换到日志配置字符串中来有效地工作。

我真的想一路控制log config string中%u引用的值。这似乎是可能的唯一方法是由 Apache 中的身份验证模块返回值。

可供选择的 mod_auth 模块没有尽头 - 但是大多数似乎都实现了自己的会话管理(即生成自己的 cookie 并维护自己的用户名-会话查找)。

在理想的世界中,我想要一个模块:

  1. 允许我指定会话 cookie 名称
  2. 可以从包含用户名的 PHP 会话中检索任意/可配置的命名变量
  3. 然后将缓存非空 sessionid/用户名组合
  4. 在适当的情况下,会将用户重定向到可配置的登录 URL

我曾经在 C 编程方面过得去——所以如果有必要我可以自己写——不幸的是,来自https://modules.apache.org 的很多链接都已失效(mod_auth_any,mod_auth_cookie_dbm),所以我很难找到与我的内容相近的东西需要了解 API / 找到可以开箱即用的东西。

对编写良好的模块有什么建议,可以满足我的需要,或者接近我的要求并且编写/维护良好?

TIA

C.

【问题讨论】:

    标签: php apache session module authentication


    【解决方案1】:

    决定选择authmemcookie

    【讨论】:

      【解决方案2】:

      你应该检查mod_auth_external

      wiki 包含很多有用的信息,例如:

      可以使用 Cookie,但是:

      无法从身份验证模块设置 cookie

      并且没有进行身份验证缓存(只有 mod_authz_ldap 具有服务器端缓存)。

      我认为您需要在专门用于该工作的单独应用程序中处理 PHP 会话初始化(cookie 集)、登录页面、重试页面和登录成功(可能还有会话 ID 重新生成)。使用第二个虚拟主机,只这样做,就像使用 CAS 或 Radius 服务器等 SSO 解决方案一样。然后使用 mod_auth_external 检查给定的 cookie 内容或将用户重定向到该登录应用程序。在 mod_auth_external 身份验证器中,您必须控制它是服务器端的有效会话(不信任 cookie 内容),直接在数据库上或与第二个应用程序通信),但您应该找到运行速度很快的东西,它是在每个请求的对象上完成。或者信任 cookie 内容,仅将其用于登录目的,但不要在您的真实 PHP 应用程序上信任它,并检查会话在真实应用程序 PHP 端是否有效。

      【讨论】:

      • 感谢 regiliero。 “这是不可能的......来自身份验证模块” - 你从哪里得到这个?它是特定于 mod_auth_external 的吗?似乎有几个身份验证模块声称正在使用 cookie,例如mod_auth_cookie_mysql2,TIA
      • 这在 HowTo 第 5 部分的 mod_auth_external 文档中。
      • 啊,谢谢。它似乎只是一个为后端提供接口的模块,该接口匹配用户名和密码 - 并为每个请求调用程序的新实例(无缓存,无守护程序支持),因此它会占用大量资源。从那以后我发现authmemcookie.sourceforge.net 似乎非常接近我的要求。
      猜你喜欢
      • 1970-01-01
      • 2016-08-29
      • 2011-06-23
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      相关资源
      最近更新 更多