前言談應用系統整合,帳號是第一步需要整合的應用系統要素,而帳號整合一直有個很響亮的名字叫做單一簽入(Single Sign On);大家都期待只需要記憶一組帳號密碼就可以通行無阻。 帳號管理幾乎是每個系統所會遇到的課題,最簡單的開個資料庫使用者表格加上帳號密碼就搞定,好一點的會將密碼加密;而大部份系統對於帳號管理的作法都是相當粗糙而容易被破解的。 藉由將系統帳號驗證(Authentication)分離開來,除了各個系統間帳號可以互通有無,更可以針對安全性部份做統一加強,例如在 傳遞帳號及密碼時採用SSL加密;進而形成帳號驗證伺服器(Authentication Server)的概念,將組織帳號予以集中管理,各個系統再透過帳號驗證伺服器(Authentication Server)進行認證。 在本文中我們會分享如何實作MediaWiki的帳號介面,藉由將帳號驗證部份抽離出來可讓MediaWiki以與其他的系統進行整合。 步驟一:瞭解帳號驗證介面AuthPlugin.php在MediaWiki當中要抽換原本的帳號驗證程式必須要實作MediaWiki所提供的帳號驗證介面,此介面在MediaWiki安裝路徑下的includes目錄,其下的AuthPlugin.php檔案;以筆者在Linux環境下完整的路徑名稱是:
筆者以表格方式來說明介面函式的用途:
步驟二:實作帳號驗證介面在實作部份筆者提供一個最簡單的實作程式碼給讀者參考,只有實作userExists及authenticate函式,由外部資料庫提供驗證,使用此程式碼的步驟如下:
本程式只為表達實作MediaWiki帳號驗證介面之用,您可依需求改成更嚴謹之程式,並且逐漸加上其它函式,例如新增使用者及網域的支援。
步驟三:更改設定檔帳號驗證程式在撰寫好帳號驗證程式後,需要告訴MediaWiki將原本的帳號驗證程式改為我們自行撰寫的,在MediaWiki的設定檔案LocalSettings.php加上以下的設定來引用自行撰寫的帳號驗證程式。
結語在完成以上步驟後再登入MediaWiki時就會採用新的帳號驗證程式,若將MediaWiki用在組織知識管理上,此帳號整合功能就會相當有用;讀者若想參考更複雜的範例可以參考Extension:LDAP Authentication這個外掛。 |