单点login(SSO)如何使用PHP + Apache针对Active Directory进行透明身份validation?

我需要更多地了解有关Active Directory上的Web应用程序的SSO。

为了简单地让用户login到AD进行身份validation,我知道我可以使用Zend_LdapadLdap等库。 但在这种情况下,用户仍然需要键入login两次。 例如: 从phpvalidationActive Directory / ISA

Afaik,要使用SSO进行transparent login ,我需要实现一个额外的apache模块。 例如: 如何使用Microsoft AD对内部PHP应用程序实施单点login(SSO)?

使用PHP,Active Directory进行身份validation,同时使用IE / Firefox

首先,我需要知道我需要使用哪个apache模块以及为什么。 在这篇文章中 ,有三个: mod_ntlmmod_auth_kerbApache2:AuthenNTLM 。 最后一个是Apache2:AuthenNTLM

在上面描述的问题中,接受的答案是mod_auth_sspi

当谈到Active Directory时, 我已经得到了这个答案 ,它将活动目录描述为ldap + kerberos +“一些其他杂项”的实现。

我对这些名字感到非常困惑,因为我已经很努力了。 有人可以澄清一下吗? ( ldapkerberosntlmsspi等)

最后,有人可以指点我的应用程序如何识别已validation的用户(来自AD)。 它是仅仅通过像$_SERVER['REMOTE_USER']这样的$_SERVER['REMOTE_USER']传递的用户名吗? 任何密码被发送? 浏览器如何发送额外的头文件? 在每个工作站中是否需要进行本地configuration?

认证是一个混乱的混乱。 这是一些背景。

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

  • NTLM:NTLM是微软的IE,ActiveDirectory和IIS内建的SSO。 NTLM的原始版本非常不安全,所以实现了NTLMv2来解决NTLM中的安全问题。 在Windows Vista和更高版本中,默认情况下禁用原始NTLM。

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

就可以用来实现这些协议的Apache模块而言,列出了一个相当不错的列表。

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

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

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

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

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

单点登录和共享认证是相关但不同的概念 。 我想你可能会混淆他们。 如果您想要真正的SSO,请查看CAS 。

LDAP和AD是用于存储用户和组织数据的协议。 它们对Web上的实际身份验证没有用处,但可以在SSO(如CAS)后面使用它们作为“数据库”。