簡單地說,就是我不想再用Windows Server開發,但是又需要NTLM/AD整合認證,所以只好DIY自力更生。
Ubuntu 12.04還是用Apache 2.2,所以就以Apache 2.2為主。
方法1:
可以先看Setting up Apache 2.2.x for NTLM Authentication using Mod NTLM2,再看NTLM Windows domain authentication for Rails application,這兩個都是用mod_ntlm的方式,要稍微改一下,Raimonds Simanovskis已經改好,放在這。
因為Ubuntu的Apache 2.2把 apxs 改名為 apxs2 ,我編譯的方法是
==================================================
方法2:
用比較新的mod_auth_ntlm_winbind,但這個必須配合samba 3,有中國人分享做法,如果看這篇的話順序有問題,How to join Ubuntu/Samba to a Windows 2003 Active Directory domain寫得才對,smbd和winbind都得啟動才可以join domain,否則會有錯誤訊息,一直加不進。
net ads join -U administrator 和 net ads join -U administrator@your-domain-name.not-copy-me 都可以,現在的samba 3真的不錯用
接下來
最後 /etc/apache2/mods-available 加上 auth_ntlm_winbind.load內容為
==================================================
注意:以上兩種方法只能擇一使用,同時啟動兩種認證在同一個process似乎會打架,mod_ntlm會失效。
Ubuntu 12.04還是用Apache 2.2,所以就以Apache 2.2為主。
方法1:
可以先看Setting up Apache 2.2.x for NTLM Authentication using Mod NTLM2,再看NTLM Windows domain authentication for Rails application,這兩個都是用mod_ntlm的方式,要稍微改一下,Raimonds Simanovskis已經改好,放在這。
因為Ubuntu的Apache 2.2把 apxs 改名為 apxs2 ,我編譯的方法是
apxs2 -DAPACHE2 -c -i mod_ntlm.c會自己裝到 /usr/lib/apache2/modules/mod_ntlm.so ,加上 /etc/apache2/mods-available/ntlm.load 內容為:
LoadModule ntlm_module /usr/lib/apache2/modules/mod_ntlm.so使用方法為
MOD_NTLM確實比較方便,但是它有一個缺點,只能認證一個DOMAIN,也沒有LOGON_USER的Server variable,只會把認證後的user 傳到 REMOTE_USER ,例如: mydomain\userid 就會變成 userid 塞到 REMOTE_USER 。<Directory "你要NTLM認證的目錄"> AuthName "My Application" AuthType NTLM NTLMAuth on NTLMAuthoritative on NTLMDomain domain.com NTLMServer dc01.domain.com NTLMBackup dc02.domain.com require valid-user </Directory>
==================================================
方法2:
用比較新的mod_auth_ntlm_winbind,但這個必須配合samba 3,有中國人分享做法,如果看這篇的話順序有問題,How to join Ubuntu/Samba to a Windows 2003 Active Directory domain寫得才對,smbd和winbind都得啟動才可以join domain,否則會有錯誤訊息,一直加不進。
net ads join -U administrator 和 net ads join -U administrator@your-domain-name.not-copy-me 都可以,現在的samba 3真的不錯用
接下來
autoconf還要加上需要的權限(請千萬不要改成777)
./configure
apxs2 -DAPACHE2 -c -i mod_auth_ntlm_winbind.c
chmod 750 /var/run/samba/winbindd_privileged再編輯 /etc/group ,把 www-data 加到 winbindd_priv 群組,加完後得重啟winbind,service winbind restart
最後 /etc/apache2/mods-available 加上 auth_ntlm_winbind.load內容為
LoadModule auth_ntlm_winbind_module /usr/lib/apache2/modules/mod_auth_ntlm_winbind.so使用方法
mod_auth_ntlm_winbind很可惜地,也是用認證user放到REMOTE_USER變數裡,也並不能對group限制,只有windows上的mod_auth_sspi可以設定到group權限;使用PHP的朋友可以配合adLDAP使用。<Directory "你要NTLM認證的目錄"> AuthName "NTLM Authentication thingy" NTLMAuth on NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp" NTLMBasicAuthoritative on AuthType NTLM require valid-user </Directory>
==================================================
注意:以上兩種方法只能擇一使用,同時啟動兩種認證在同一個process似乎會打架,mod_ntlm會失效。
留言