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