代码之家  ›  专栏  ›  技术社区  ›  Marcelo Cantos

PHP中的Kerberos身份验证

  •  12
  • Marcelo Cantos  · 技术社区  · 17 年前

    我有。。。

    • Debian Linux 2.6 Web服务器
        • 改装认证路缘石/5.3
        • PHP/5.2
    • Windows客户端
      • 火狐3
      • “已登录的身份”user@EXAMPLE.COM“在MIT网络身份管理器中

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

    可能吗?如果是:如何?

    到目前为止,我发现:我必须 "enable" the domain in Firefox .

    不过就这样。。。

    2 回复  |  直到 11 年前
        1
  •  4
  •   Cetra    17 年前

    我不确定这是否会有帮助,但看起来Apache会将用户名信息与 modauthkerb 如果您使用 KrbSaveCredentials 参数您应该在php中获得两个全局变量:

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

    http://archives.postgresql.org/pgsql-admin/2004-08/msg00144.php

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

        2
  •  2
  •   abbra    12 年前

    mod_auth_路缘将为您处理实际身份验证。之后,它将设置远程_USER和KRB5CCNAME环境变量。请注意,有几个注意事项:

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

    对于您的案例,我建议您看看Tom McLaughlin的《如何做》一书: http://blogs.freebsdish.org/tmclaugh/2010/07/15/mod_auth_kerb-ad-and-ldap-authorization/