我需要更多地了解有关Active Directory上的Web应用程序的SSO。
为了简单地让用户login到AD进行身份validation,我知道我可以使用Zend_Ldap
, adLdap
等库。 但在这种情况下,用户仍然需要键入login两次。 例如: 从phpvalidationActive Directory / ISA
Afaik,要使用SSO
进行transparent login
,我需要实现一个额外的apache模块。 例如: 如何使用Microsoft AD对内部PHP应用程序实施单点login(SSO)?
使用PHP,Active Directory进行身份validation,同时使用IE / Firefox
首先,我需要知道我需要使用哪个apache模块以及为什么。 在这篇文章中 ,有三个: mod_ntlm
, mod_auth_kerb
和Apache2:AuthenNTLM
。 最后一个是Apache2:AuthenNTLM
在上面描述的问题中,接受的答案是mod_auth_sspi
。
当谈到Active Directory时, 我已经得到了这个答案 ,它将活动目录描述为ldap
+ kerberos
+“一些其他杂项”的实现。
我对这些名字感到非常困惑,因为我已经很努力了。 有人可以澄清一下吗? ( ldap
, kerberos
, ntlm
, sspi
等)
最后,有人可以指点我的应用程序如何识别已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)后面使用它们作为“数据库”。