跳到主要內容

在Linux環境中讓Apache使用NTLM認證

簡單地說,就是我不想再用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 ,我編譯的方法是
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
使用方法為
<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>
MOD_NTLM確實比較方便,但是它有一個缺點,只能認證一個DOMAIN,也沒有LOGON_USER的Server variable,只會把認證後的user 傳到 REMOTE_USER ,例如: mydomain\userid 就會變成 userid 塞到 REMOTE_USER 。
==================================================
方法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
./configure
apxs2 -DAPACHE2 -c -i mod_auth_ntlm_winbind.c
還要加上需要的權限(請千萬不要改成777)
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
使用方法
<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>
mod_auth_ntlm_winbind很可惜地,也是用認證user放到REMOTE_USER變數裡,也並不能對group限制,只有windows上的mod_auth_sspi可以設定到group權限;使用PHP的朋友可以配合adLDAP使用。
==================================================

注意:以上兩種方法只能擇一使用,同時啟動兩種認證在同一個process似乎會打架,mod_ntlm會失效。

留言

這個網誌中的熱門文章

自然人憑證讀卡機驅動程式

鳥毅用的是第一代的自然人憑證讀卡機,EZ100PU(後來有同事買EZmini可以讀SIM卡似乎更好),每年報稅時用一次。 本來只是要申請些政府業務,一時之間找不到光碟,沒想到在 驅動程式下載 居然看到Linux和Mac的驅動程式,剩下的就是政府單位的網頁和程式應該改版了吧!!!

DBeaver 介面語言

DBeaver是我個人頗常用的一套跨平台Database管理工具,最近升級後發現Windows版本居然變成簡體中文,而且無法切換為英文。

如何將較高版本SQL Server複製到低版本SQL Server (降級為舊版)並保留權限及資料庫圖表

一般若是要將SQL Server裡的Database轉往其他Server時,最簡單的方式就是備份(Backup)後再還原(Restore),或者是䣃離(detach)後附加(attach)。 但是很不幸地,若是由較低版本(e.g. 2008)到較高版本(e.g. 2012)要怎麼辦呢?