使用 Apache 支援 Windows Active Directory

使用 Apache 支援 Windows Active Directory

a7adac8e837700b110f0ffc4762209d6.jpg
如果你的網站不是使用 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
 
設定 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
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 資訊了!
很簡單吧!