[英]How does single sign-on (SSO) work with PHP + Apache against an Active Directory for transparent authentication?
我需要針對Active Directory在Web應用程序上獲得更多有關SSO的知識。
為了簡單地要求用戶登錄以在AD上進行身份驗證,我知道我可以使用某些庫,例如Zend_Ldap
, adLdap
等。 但是在這種情況下,用戶仍然需要兩次鍵入登錄名。 例如: 通過php對Active Directory / ISA進行身份驗證
Afaik,要使用SSO
進行transparent login
,我需要實現一個額外的apache模塊。 例如: 如何為內部PHP應用程序使用Microsoft AD實施單點登錄(SSO)?
在使用IE / Firefox的同時,使用PHP,活動目錄針對ldap進行身份驗證
首先,我需要知道我需要使用哪個Apache模塊以及原因。 例如,在本文中 ,有三個: mod_ntlm
, mod_auth_kerb
和Apache2:AuthenNTLM
。 那是Apache2:AuthenNTLM
在上述問題中,可接受的答案是mod_auth_sspi
。
在談論Active Directory時, 我得到了這個答案 ,它將Active Directory描述為ldap
+ kerberos
+“其他一些零碎的東西”的實現。
對於所有這些名稱,我感到非常困惑,因為我很努力地使用它。 有人可以向我澄清嗎? ( ldap
, kerberos
, ntlm
, sspi
等)
最后,有人可以指出我該應用程序如何識別經過身份驗證的用戶(來自AD)。 僅僅是通過諸如$_SERVER['REMOTE_USER']
類的東西傳遞的用戶名嗎? 是否發送密碼? 瀏覽器如何發送這些額外的標題? 每個工作站中是否都需要進行本地配置?
身份驗證是一團混亂。 這是一些背景。
LDAP:LDAP是用於傳達用戶目錄信息的協議。 它還可以處理身份驗證,但它不是無縫的(SSO)。
NTLM:NTLM是內置於IE,ActiveDirectory和IIS中的Microsoft SSO。 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:這是Windows的Apache模塊,支持原始NTLM(不是NTLMv2)。
Apache2:AuthenNTLM:這是處理NTLM的Perl模塊。 我不知道它是否支持NTLM和NTLMv2。
mod_auth_ntlm_winbind:這是一個與Samba身份驗證連接的Apache模塊。
單點登錄和共享身份驗證是相關的概念,但有所不同 。 我認為您可能會混淆它們。 如果您想要真正的SSO,請查看CAS 。
LDAP和AD是用於存儲用戶和組織數據的協議。 它們對通過Web進行實際身份驗證沒有用,但是您可以在SSO(例如CAS)后面將它們用作“數據庫”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.