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

时间:2009-09-07 14:53:12

标签: php authentication active-directory kerberos

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

我一直在网上搜索有关PHP AD Kerberos身份验证的任何信息,但一无所获。有人能指出我正确的方向吗?

提前致谢。

3 个答案:

答案 0 :(得分:3)

如果您使用的是Active Directory,那么您的网络服务器可能就是IIS,它内置了kerberos * ..然后只需让浏览器& 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设置..

希望你在问别的东西..如果我祈祷它会是你没有实现这个,它会导致每个请求的整个身份验证过程......结果会减慢每个页面的负载..无论如何你实施了多少聚合/黑客/解决方案..这只是一个坏主意,但是一旦你开始或告诉经理,他们真的很喜欢它,因为它节省了他们不得不再次登录..哦,他们仍然会抱怨速度,但.. ..

答案 1 :(得分:2)

不是免费软件解决方案 - 谷歌“Plexcel”关键字

答案 2 :(得分:1)

PHP有一个krb5模块。虽然还没有包装,但它有一个PECL entry。你可以在这里找到更多相关信息:

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