1. 程式人生 > >Apache 用戶認證

Apache 用戶認證

Apache 用戶認證

技術分享圖片

平常工作中,有必要對一些特定的頁面做用戶認證,就是登錄進去的時候,要先輸入用戶名和密碼才可以進入,這樣做比較安全。
那麽用戶認證怎麽做呢?具體操作見下圖,
技術分享圖片
輸入命令 cat /usr/local/apache2.4/conf/extra/httpd-vhosts.conf,查看文件內容,確定更改第二個 VirtualHost 虛擬主機,因為第一個虛擬主機是默認虛擬主機,先不管它。接著輸入命令 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf,回車,見下圖,
技術分享圖片
插入上圖紅色框框的內容,保存並退出。
VirtualHost 的內容如下:
<VirtualHost *:80>

DocumentRoot "/data/wwwroot/www.111.com"
ServerName 111.com
ServerAlias www.example.com
<Directory /data/wwwroot/111.com> //指定認證的目錄
AllowOverride AuthConfig //這個相當於打開認證的開關
AuthName "111.com user auth" //自定義認證的名字,作用不大
AuthType Basic //認證的類型,一般為Basic,其他類型阿銘沒用過
AuthUserFile /data/.htpasswd //指定密碼文件所在位置
require valid-user //指定需要認證的用戶為全部可用用戶
</Directory>
</VirtualHost>

接下來輸入命令 /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd lys ,回車,見下圖,
技術分享圖片
用 -c 來創建密碼文件,-m 指定密碼類型為md5加密,lys 直接增加用戶lys。來查看一下文件 /data/.htpasswd,見下圖,
技術分享圖片
可以看到文件裏面有一堆亂碼,前面是用戶名 lys,後面是密碼,這是因為用 -m 設置的md5加密的密碼。接著第二次創建用戶 lys2,見下圖,
技術分享圖片
這次的命令就不用加 -c 選項了,然後查看文件 /data/.htpasswd ,可以看到多了一行,用戶名是 lys2。

以上就是創建用戶的過程,接下來,重新加載一下配置文件,
技術分享圖片
開始做測試,輸入命令 curl -x127.0.0.1:80 111.com,回車,見下圖,
技術分享圖片
提示了401錯誤,說明訪問的內容需要做用戶認證。使用命令 curl -x127.0.0.1:80 111.com -I,回車,可以看到提示 WWW-Authenticate: Basic realm="111.com user auth"。我們也可以在瀏覽器上登錄,先在Windows的hosts上添加網站 111.com,見下圖,
技術分享圖片
保存,然後到瀏覽器上,訪問 111.com,見下圖,
技術分享圖片
就可以看到,登錄需要用戶名和密碼。接著輸入用戶名 lys 和密碼,見下圖,
技術分享圖片
點擊登錄,就進入下圖,
技術分享圖片
以上就是用戶認證。那麽 curl 要怎麽輸入用戶名和密碼呢?輸入命令 curl -x127.0.0.1:80 -ulys:Ilovexm/520@. 111.com -I,回車,見下圖,
技術分享圖片
這樣就進入了,格式為 -u用戶名:密碼,狀態碼為 200,就是正常狀態。如果輸錯密碼,就是下圖的狀態,
技術分享圖片
狀態碼又變成 401 了。

關於用戶認證還有另外一個需求,
技術分享圖片

假設後臺訪問的地址是 admin.php ,就可以針對 這個 admin.php 做訪問認證。這邊使用的是 FileMatch,意思為匹配到 admin.php 的時候,才會執行下面那些命令。現在就來改一下配置文件,輸入命令 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf,回車,見下圖,
技術分享圖片
更改了上圖紅色框框的內容,保存並退出。重新加載配置文件,
技術分享圖片
然後還要編譯 123.php 文件,輸入命令 vim /data/wwwroot/111.com/123.php,回車,見下圖,
技術分享圖片
輸入上圖內容,保存並退出。echo 就是原文輸出的意思。接著做測試,輸入命令 !curl ,回車,見下圖,
技術分享圖片
一開始訪問 111.com 的密碼是錯的也可以進入,說明不需要密碼就可以訪問。接著訪問 123.php 的時候,就開始報錯 401,這是因為剛剛針對 123.php 做了用戶認證的限制。需要輸入用戶名和密碼,輸入命令 curl -x127.0.0.1:80 111.com/123.php -ulys:Ilovexm/520@. -I,回車,見下圖,
技術分享圖片
輸入用戶名和密碼之後,就可以訪問了。

以上就是用戶認證,當有些內容不想讓別人訪問的時候,就需要加上用戶認證。

Apache 用戶認證