单点登录(SSO)如何与PHP + Apache一起使用Active Directory进行透明身份验证?

Key*_*ana 9 php apache ldap active-directory single-sign-on

我需要在针对Active Directory的Web应用程序上更多地了解SSO.

对于只是要求用户登录到AD认证,我知道,我可以用这样一些图书馆Zend_Ldap,adLdap等等.但在这种情况下,用户仍需要输入两次登录信息.例如:从php验证Active Directory/ISA

Afaik,SSO用于transparent login,我需要实现一个额外的apache模块.例如: 如何使用Microsoft AD为内部PHP应用程序实现单点登录(SSO)?

在使用IE/Firefox时使用PHP,活动目录对ldap进行身份验证

首先,我需要知道我需要使用哪个apache模块以及为什么.在这篇文章中,例如主要有三种:mod_ntlm,mod_auth_kerbApache2:AuthenNTLM.而那个人就是Apache2:AuthenNTLM

在上面提到的问题中,接受的答案是mod_auth_sspi.

在谈论Active Directory时,我得到了这个答案,它将活动目录描述为ldap+ kerberos+"其他一些杂项"的实现.

我对所有这些名字都非常困惑,因为我已经非常努力了.有人可以向我澄清一下吗?(ldap,kerberos,ntlm,sspi等等)

最后,有人可以指出应用程序如何识别经过身份验证的用户(来自AD).它只是通过用户名传递的用户名$_SERVER['REMOTE_USER']吗?是否发送了密码?浏览器如何发送这些额外的标头?是否需要在每个工作站中进行任何本地配置?

小智 15

身份验证是一个混乱的混乱.这是一些背景知识.

  • LDAP:LDAP是用于传递用户目录信息的协议.它也可以处理身份验证,但它不是无缝的(SSO).

  • NTLM:NTLM是Microsoft的SSO,内置于IE,ActiveDirectory和IIS中.NTLM的原始版本非常不安全,因此实现了NTLMv2来修复NTLM中的安全问题.默认情况下,Windows Vista及更高版本中禁用原始NTLM.

  • Kerberos:Kerberos是一种非常安全的开放标准,旨在提供无缝(SSO)身份验证.ActiveDirectory支持Kerberos版本.

至于可用于实现这些协议的Apache模块,您包含了很好的列表.

  • mod_ntlm:这是一个在Linux上运行并支持原始NTLM(不是NTLMv2)的Apache模块.

  • mod_auth_kerb:这是一个实现Kerberos的Apache模块.

  • mod_auth_sspi:这是一个支持原始NTLM(不是NTLMv2)的Windows Apache模块.

  • Apache2:AuthenNTLM:这是一个处理NTLM的Perl模块.我不知道它是否支持NTLM和NTLMv2.

  • mod_auth_ntlm_winbind:这是一个与Samba的身份验证接口的Apache模块.