代码之家  ›  专栏  ›  技术社区  ›  rogeriopvl

使用Kerberos进行PHP Active Directory身份验证

  •  3
  • rogeriopvl  · 技术社区  · 15 年前

    我目前正在将CMS(在PHP中开发)身份验证与Active Directory集成。这个特定的Active Directory只允许通过kerberos或ldaps://进行身份验证(但最后一个不是最需要的,因为我必须使用绝对路径)。

    我一直在网上搜索关于php-ad-kerberos身份验证的任何信息,但什么也没有找到。有人能给我指出正确的方向吗?

    事先谢谢。

    3 回复  |  直到 12 年前
        1
  •  2
  •   Alexey Sviridov    15 年前

    非免费软件解决方案-按“plexcel”关键字搜索

        2
  •  3
  •   Grizly    15 年前

    如果您使用的是Active Directory,那么您的Web服务器可能是带有内置kerberos*的IIS。然后让浏览器&webserver处理身份验证,并使用如下PHP:

    $user = isset($_SERVER['AUTH_USER']) ? $_SERVER['AUTH_USER'] : false; 
    if((false === $user) or ('' == $user)){
    //Divert to incorrect password page.. 
    //MSIE typically tries three times, Kerb/NTLM/Plain
    //FF will only try NTLM/Plain if configured for NTLM
    //Chrome.. won't work with this at all.. not that I have discovered.
    //If testing locally using Apache, user will be 0
    }
    

    现在你可以用Kerberos来做SSO了,很有魅力。

    *:称为“集成Windows身份验证” http://support.microsoft.com/kb/324274 必须通过将“安全区域”设置为“本地Intranet”在浏览器中启用。如果IIS设备实际上位于本地Intranet上,则可能会发生这种情况。但这取决于SPN和域、用户框和IIS框以及任何信任关系。如果它在一个域名/计算机名相同的域上,它应该可以工作。如果你是群集或任何有趣的事情,期待一个主要的头痛,而不仅仅是一个正常的头痛。如果您觉得有必要,可以编写/gpo的IE设置脚本。

    希望你在问别的事情……如果我祈祷您没有实现这一点,它将导致每个请求的整个身份验证过程。这会降低每次页面加载的速度。无论您实现了多少聚合/黑客/解决方案。这只是一个坏主意,但一旦你开始或告诉经理这件事,他们真的很喜欢它,因为这样他们就不用再登录了。哦,他们还是会抱怨速度,但是……

        3
  •  1
  •   bmaupin    12 年前

    有一个用于PHP的krb5模块。它有一个 PECL entry 虽然还没有包装。您可以在这里了解更多信息:

    http://mbechler.eenterphace.org/blog/index.php?/archives/12-php_krb5-releases.html