【问题标题】:PHP Active Directory authentication with Kerberos使用 Kerberos 进行 PHP Active Directory 身份验证
【发布时间】:2023-03-27 23:28:01
【问题描述】:
我目前正在将 CMS(用 PHP 开发)身份验证与 Active Directory 集成。这个特定的 Active Directory 只允许通过 Kerberos 或 ldaps:// 进行身份验证(但最后一个不是最需要的,因为我必须使用绝对路径)。
我一直在网上搜索有关 PHP AD Kerberos 身份验证的任何信息,但一无所获。谁能指出我正确的方向?
提前致谢。
【问题讨论】:
标签:
php
authentication
active-directory
kerberos
【解决方案1】:
如果您使用 Active Directory,您的网络服务器可能是 IIS,它具有内置的 kerberos*.. 然后让浏览器和网络服务器处理身份验证并使用一些 PHP,例如:
$user = isset($_SERVER['AUTH_USER']) ? $_SERVER['AUTH_USER'] :假;
if((false === $user) 或 ('' == $user)){
//转移到错误的密码页面..
//MSIE 通常会尝试 3 次,Kerb/NTLM/Plain
//如果为 NTLM 配置,FF 只会尝试 NTLM/Plain
//Chrome .. 根本不能用这个.. 不是我发现的。
//如果使用Apache本地测试,用户将是0
}
现在您可以使用 Kerberos 进行 SSO,非常棒。
*:称为“集成 Windows 身份验证”http://support.microsoft.com/kb/324274,必须通过将“安全区域”设置为“本地 Intranet”在浏览器中启用。如果 IIS 框实际上位于本地 Intranet 上,则可能会发生这种情况。但它取决于 SPN 和域、用户框和 IIS 框以及任何信任关系。如果它位于具有相同域名/机器名的单个域上,它应该可以工作。如果您正在聚集或任何有趣的事情,请期待严重的头痛,而不仅仅是正常的头痛。如果您觉得需要,您可以编写脚本/GPO IE 设置。
希望您问的是其他问题.. 如果我祈祷您没有实现此功能,它会导致每个请求的整个身份验证过程.. 结果会减慢每个页面的加载速度.. 无论如何您实施了多少聚合/黑客/解决方法.. 这只是一个坏主意,但是一旦您开始或告诉经理它,他们真的很喜欢它,因为它使他们不必再次登录.. 哦,他们仍然会抱怨速度,但是..
【解决方案2】:
不是免费软件解决方案 - google by 'Plexcel' 关键字