dokuwiki 整合 minecraft 驗證系統

dokuwiki 是一套我很喜歡的迷你 wiki 系統,他的特色包括輕巧又有足夠的功能、檔案以純文字撰寫等。

因為目前所架設的 Minecraft 伺服器有採用 AuthMe 驗證系統,因為要在遊戲裡面註冊帳號實在是很麻煩,因此很早以前就寫了個網站方便更改資料、註冊帳號。但是 wiki 也需要帳號,考量到使用者編輯的需要,每次都要使用者一直註冊帳號實在是很不方便,因此就嘗試結合 dokuwiki 的認證機制,讓使用者可以使用同一組帳號密碼登入遊戲與網站。

dokuwiki 支援各種登入驗證方式,預設是採用 plaintext,也就是密碼 hash 之後存在純文字檔案中。由於 AuthMe 是採用 MySQL 作為後台,因此我們就以 mysql_class.php 這個 MySQL 範例檔案來修改。

新建一個 local.protected.php 於 conf 資料夾中,這樣設定檔才不會被自動設定蓋掉。同時從 /conf/mysql.conf.php.example 可以看到各種應該寫的 MySQL query,我建議直接改名成 mysql.conf.php 然後直接 require 到  local.protected.php 中,這樣升級時就不會被覆蓋。同時,這邊也要搭配 AuthMe 的架構,如果你有更改過資料庫欄位的命名,也要配合調整 query。

由於要自己撰寫 authentication backend,所以將 /inc/auth/mysql.class.php 複製一份,更名為  minecraft.class.php。可以將 minecraft 更改為自己喜歡的名稱,但注意於之後都要使用同樣的 class 名稱。

class auth_minecraft extends auth_basic {
//auth_mysql 改成 auth_minecraft
...
    function checkPass($user,$pass){
    //主要驗證的程式
    ...
    return $rc;
    }
}

剩下要改寫的部份其實不多,照著官網提供的資料結構與 AuthMe 給的密碼加密方式 (sha256) 就可以了。這樣就完成最基本的驗證登入,剩下的部份也都照著改寫,應該就沒有問題了。

Reference:
https://www.dokuwiki.org/auth:mysql 
https://www.dokuwiki.org/devel:authentication_backends

UPDATED 20130329:

沒想到才過沒多久,Dokuwiki 就改變驗證後台的撰寫方式了 Orz

現在是採用 Authentication Plugin 的方式撰寫,其實跟之前的方法差不多,主要就是要寫一個外掛放在後台這樣子。

詳細資源請參考 https://www.dokuwiki.org/devel:auth_plugins 

dokuwiki 整合 minecraft 驗證系統