HTTP Basic Auth也有用武之地
本文轉(zhuǎn)載自微信公眾號「虞大膽的嘰嘰喳喳」,作者虞大膽。轉(zhuǎn)載本文請聯(lián)系虞大膽的嘰嘰喳喳公眾號。
昨天《聊聊安全》說到了auth驗(yàn)證,其實(shí)在nginx中支持非常簡單。
HTTP Basic Authentication是HTTP協(xié)議的一部分,第一次請求的時候,服務(wù)器會返回401,用戶輸入用戶名和密碼后,驗(yàn)證通過則繼續(xù)訪問,反之還是401。
那Nginx如何支持它呢?
首先要在服務(wù)器上保存密鑰文件,可以使用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:驗(yàn)證通過后,瀏覽器會將驗(yàn)證信息保存起來,至于什么時候失效目前并不可知。
2:修改服務(wù)器文件用戶名密碼后,客戶端會再次要求驗(yàn)證。
3:在多個vhost上配置的密鑰文件是同一個,則客戶訪問多個vhost,只要驗(yàn)證一次,看上去是個小缺陷,但對用戶來說卻非常方便。
對于內(nèi)部系統(tǒng)來說,黑白名單設(shè)置也非常有用,就看是否符合應(yīng)用場景,因?yàn)楹芏嘤脩舻腎P一直在變化,舉個例子:
- location /api {
- deny 192.168.1.2;
- allow 192.168.1.1/24;
- allow 127.0.0.1;
- deny all;
- }