使用 Nginx 實現 HTTP Basic authentication (BA) 基本認證

HTTP 基本認證 在維基百科的介紹上雖然是個頗舊世代的機制,但在某些情境下還滿好用的說~

  1. 單一角色管理後台、
  2. Single Page、
  3. 專案前後端切割分明(一種連登入介面都不想做的概念)

其實綜合上述幾點,就是以活動網站這類型為主。後台也就是查看活動參與的資料,並對這些資料做一些增刪改不複雜的操作。

這機制的缺點有:

  1. 弱密碼(base64 encode)
  2. 沒有「登出」機制
  3. 因為使用header和伺服器做交握,所以各瀏覽器間的快取機制不一,無法妥善管理

但! 活動網站週期短、廣告也是針對精準客群打,光是設定後台路徑就像個密碼一樣~ 所以就決定是用這技術啦!

在這邊採用 Nginx 這套伺服器做管理,前端跟設計通常會是打頭陣實作好頁面給客戶驗收,但因為是活動頁面,有成效追蹤與調整的部分(對開發來說,調整就是最有影響之處),在避免因為後端實作而影響到前端調整頁面的困擾,技術上也是要切開,走API 架構設計。

此模式帶來的影響就是管理的後台頁,一樣前後端切開的話會需要在權限管理問題上多花一點功夫,不過如果從入口處就阻擋觀看到前端企業邏輯的話,那問題就好解多了!更還能將此活動網站模板化,加速下次活動案利用!

用後端一把罩的方式保護前端,達成前後端切割又不會因此把簡單網站複雜化的做法

Nginx 的路徑規則對應到前端製作的後台操作頁後補個 auth_basicauth_basic_user_file 參數即可,如下

location =/this_is_cpanel.html {
        try_files $uri =404;
        auth_basic "Private Area";
        auth_basic_user_file /path/to/password/file;
}

路徑指到密碼存放路徑就可以有效果囉!

至於密碼如何產生,Nginx 也把這問題列在常見問題

另外還有線上工具:Htpasswd Generator

千萬別為了產生這簡單的密碼還跑去裝Apache的工具啊~XD

補充

這個基本驗證機制不一定需要從伺服器上操作,因為是協定間的機制,所以只要能產生對應的 header 與瀏覽器交握就好。參考: HTTP authentication with PHP

Facebook 外掛整合

Share: