14

让我们假设我对 Kerberos 了解不多 - 只是基础知识。

我有...

  • Debian Linux 2.6 网络服务器
    • 阿帕奇 2.2
      • mod_auth_kerb/5.3
      • PHP/5.2
  • 一个(工作的)Kerberos 领域
  • 视窗客户端
    • 火狐 3
    • 麻省理工学院网络身份管理器中的登录身份“user@EXAMPLE.COM”

如何在 PHP 脚本中使用此信息,以便在访问者拥有类似的 kerberos 票证时无需登录网站?我不希望 Apache 处理身份验证。我需要找出哪个用户正在通过 PHP 访问该站点。

那可能吗?如果是这样:如何?

到目前为止我发现了什么:我必须在 Firefox 中“启用”域

然而,仅此而已...

4

2 回答 2

4

我不确定这是否会有所帮助,但如果您使用该参数,Apache 将使用modauthkerb包向 PHP 发送用户名信息。KrbSaveCredentials您应该在 php 中获得两个全局变量:

 $_SERVER['REMOTE_USER']
 $_SERVER['KRB5CCNAME']

http://archives.postgresql.org/pgsql-admin/2004-08/msg00144.php看起来他们已经完成了这项工作。

这样,如果您可以看到用户是什么,那么实际上不需要 php 进行身份验证。

于 2008-12-24T04:09:15.853 回答
2

mod_auth_kerb 将为您处理实际身份验证。之后,它将设置 REMOTE_USER 和 KRB5CCNAME 环境变量。请注意,有一些警告:

  • 如果启用了 Krb5AuthToLocal 选项,mod_auth_kerb 可以在 Kerberos 主体和本地用户名之间进行转换。
  • 如果启用了 Krb5AuthToLocal,当身份验证成功时,mod_auth_kerb 将调用 Kerberos 库来执行从经过身份验证的名称到本地名称的转换,因为 Kerberos 主体并不总是与操作系统中的实际用户相同(您可以将主体映射到用户名)。
  • 当使用 MIT Kerberos 时,此映射是在 /etc/krb5.conf 中的 auth_to_local 规则的帮助下执行的,有关详细信息,请参阅 krb5.conf 手册页。
  • mod_auth_kerb 有一个错误,即生成的本地名称不应具有比主体本身更长的名称。这对于来自默认领域的主体通常是正确的,因为它们没有领域部分,即“用户”而不是“用户@REALM”。但是,如果您有多个受信任的领域,则来自非默认领域的用户将显示为“user@ANOTHER.REALM”,然后 mod_auth_kerb 会崩溃。这个错误应该在 Fedora 18+ 和 RHEL6.5 中修复,不确定 Debian,因为上游的 mod_auth_kerb 有点死了。
  • 因此,您的 REMOTE_USER 变量将包含 Kerberos 主体或本地用户名,具体取决于 mod_auth_kerb 的配置方式。如果您的应用程序依赖 REMOTE_USER 值必须是真实的现有系统用户这一事实,则需要确保启用 Krb5AuthToLocal 选项并且此类用户在系统中可见(通过 winbind 或 sssd)。

对于您的情况,我建议您查看 Tom McLaughlin 的优秀方法:http: //blogs.freebsdish.org/tmclaugh/2010/07/15/mod_auth_kerb-ad-and-ldap-authorization/

于 2013-10-18T08:50:39.650 回答