HTTP Basic Auth也有用武之地
本文轉(zhuǎn)載自微信公眾號「虞大膽的嘰嘰喳喳」,作者虞大膽。轉(zhuǎn)載本文請聯(lián)系虞大膽的嘰嘰喳喳公眾號。
昨天《聊聊安全》說到了auth驗證,其實在nginx中支持非常簡單。
HTTP Basic Authentication是HTTP協(xié)議的一部分,第一次請求的時候,服務器會返回401,用戶輸入用戶名和密碼后,驗證通過則繼續(xù)訪問,反之還是401。
那Nginx如何支持它呢?
首先要在服務器上保存密鑰文件,可以使用httpd-tools工具(以centos發(fā)行版為例),首先安裝:
- yum install httpd-tools
然后生成:
- htpasswd -c /etc/.htpasswd user1
- htpasswd /etc/.htpasswd user2
如果要修改密碼:
- htpasswd -b /etc/.htpasswd user1 passwd
其次在nginx service或者location中配置:
- location /api {
- auth_basic "Admin";
- auth_basic_user_file /etc/.htpasswd;
- }
是不是很簡單,有幾個小收獲:
1:驗證通過后,瀏覽器會將驗證信息保存起來,至于什么時候失效目前并不可知。
2:修改服務器文件用戶名密碼后,客戶端會再次要求驗證。
3:在多個vhost上配置的密鑰文件是同一個,則客戶訪問多個vhost,只要驗證一次,看上去是個小缺陷,但對用戶來說卻非常方便。
對于內(nèi)部系統(tǒng)來說,黑白名單設置也非常有用,就看是否符合應用場景,因為很多用戶的IP一直在變化,舉個例子:
- location /api {
- deny 192.168.1.2;
- allow 192.168.1.1/24;
- allow 127.0.0.1;
- deny all;
- }