使用 Kerberos 的 PHP Active Directory 身份验证

标签 php authentication active-directory kerberos

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

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

提前致谢。

最佳答案

如果您使用的是 Active Directory,则您的网络服务器可能是 IIS,它具有内置的 kerberos*.. 然后让浏览器和网络服务器处理身份验证并使用一些 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 框的域以及任何信任关系.. 如果它在一个域名/机器名相同的域上,它应该可以工作。如果您正在聚集或做任何有趣的事情,请预料到严重的头痛,而不仅仅是正常的头痛。如果您觉得需要,您可以编写 IE 设置的脚本/GPO。

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

关于使用 Kerberos 的 PHP Active Directory 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1389754/

相关文章:

authentication - 用户名中的有效字符应该是什么?

azure - 如何使用 Graph API 在 Azure Active Directory 上创建用户(工作帐户)

javascript - 在某个类中所有链接的末尾添加额外的文本

java - 具有多个用户 OU 和多个访问 CN 的 Spring LDAP 身份验证

php分页查询多个表

android - Azure Google 身份验证获取用户个人资料信息

c# - 加入域时本地用户帐户的 Principal.IsMemberOf 异常

active-directory - LDAP 查询查找具有多个父级的所有组

php - MySQL触发器: How to know which script called it?

PHP password_verify() 不适用于数据库