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

4

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

我一直在网上搜索关于PHP AD Kerberos Authentication的任何信息,但没有找到。有人可以指点我正确的方向吗?

提前致谢。

3个回答

4
如果您正在使用Active Directory,则可能您的Web服务器是IIS,它内置了Kerberos。然后只需让浏览器和Web服务器处理身份验证,并使用一些PHP,如下所示: $user = isset($_SERVER['AUTH_USER']) ? $_SERVER['AUTH_USER'] : false; if((false === $user) or ('' == $user)){ //转到密码错误页面。 //MSIE通常尝试三次,Kerb/NTLM/Plain //FF仅在配置为NTLM时尝试NTLM / Plain //Chrome..根本不起作用..至少我没有发现。 //如果在本地使用Apache进行测试,则用户将为0。 }
现在您可以使用Kerberos进行SSO,非常方便。

*: 被称为“集成Windows身份验证”http://support.microsoft.com/kb/324274,必须通过将“安全区域”设置为“本地Intranet”来在浏览器中启用。如果IIS服务器实际上位于本地Intranet上,则可能会发生这种情况。但这取决于SPN和用户框和IIS框以及任何信任关系所在的域。如果它在单个域中,域名/机器名相同,它应该可以工作。如果您正在进行群集化或其他有趣的事情,则可以预期会出现严重的头痛,而不仅仅是普通的头痛。如果您感到需要,可以编写脚本/GPO IE设置。

希望您询问的是其他内容..如果我祈祷,那就是您没有实施这个功能,因为它会导致每个请求的整个身份验证过程..结果会减慢每个页面的加载速度..无论您实施了多少聚合/黑客/解决方法..都是一个坏主意,但一旦您开始或告诉经理,他们真的很喜欢它,因为它节省了他们再次登录的时间..哦,他们仍然会抱怨速度,但是..


2

非免费软件解决方案 - 请使用“Plexcel”关键字在谷歌上搜索


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接