
如果你的網站不是使用 IIS,而是使用 Apache + PHP,又希望能夠支援 Windows AD 做到 Singal Sing On 的話,可以適用 mod_auth_sspi 來達成喔!
下載 mod_auth_sspi
http://sourceforge.net/projects/mod-auth-sspi
這是 mod_auth_sspi 在 sourceoforge 的專案,從這邊可以直接下載 mod_auth_sspi.so
這是 mod_auth_sspi 在 sourceoforge 的專案,從這邊可以直接下載 mod_auth_sspi.so
設定 apache2.4
將 mod_authnz_sspi.so 複製到 apache 中的 modules 目錄
並在 httpd.conf 中加上這行載入 module
LoadModule sspi_auth_module modules/mod_auth_sspi.so
同時,在你所需要設定的 directory 或是 virtual host 中加上
AuthName "Local Intranet" AuthType SSPI SSPIAuth On SSPIAuthoritative On SSPIOfferBasic Off SSPIOmitDomain On Require valid-user
這樣,只要 client 有登入 AD 就可以直接抓到他登入的帳號了!
設定 apache2.2
將檔案複製到 apache 中的 modules 目錄
並在 httpd.conf 中加上這行載入 module
並在 httpd.conf 中加上這行載入 module
LoadModule sspi_auth_module modules/mod_auth_sspi.so
同時,在你所需要設定的 directory 或是 virtual host 中加上
AuthName "Local Intranet" AuthType SSPI SSPIAuthoritative On SSPIOfferBasic On SSPIBasicPreferred Off SSPIAuth On require valid-user
這樣,只要 client 有登入 AD 就可以直接抓到他登入的帳號了!
抓取 NTLM 資訊
$cred = explode('\\',$_SERVER['REMOTE_USER']); if (count($cred) == 1) array_unshift($cred, "(no domain info - perhaps SSPIOmitDomain is On)"); list($domain, $user) = $cred; echo "You appear to be user <B>$user</B><BR/>"; echo "logged into the Windows NT domain <B>$domain</B>";
藉由這段程式就可以抓取到登入的 $user 與 $domain 資訊了!
很簡單吧!
很簡單吧!