Apache用戶認證配置之Basic認證
很多時候我們可能需要對伺服器資源進行保護,通常的做法是在應用層通過鑒權來實現,如果你嫌自己去實現鑒權太麻煩,那就直接讓Apache去幫你實現吧!
Apache常見的用戶認證可以分為下面三種:
- 基於IP,子網的訪問控制(ACL)
- 基本用戶驗證(Basic Authentication)
- 消息摘要式身份驗證(Digest Authentication)
基於IP的訪問控制可以通過配置 Allow From實現!這裡不多講。
一般的,我們還會在IP的基礎上,再增加一層 Basic Authentication,實現一個基本的伺服器用戶認證!
1、生成用戶名密碼文件
Adding password for user test
Adding password for user test2
test:$apr1$4R3foyQ5$1KGHVA5HQL8M9b0K/2UWO0
test2:$apr1$pKLy86CD$W9hFUvs4F06OBXtQhCbPV/
可以看到用戶名密碼文件已經生成了,一行一個!
2、配置 VirtualHost,如:
- AllowOverride 表示通過配置文件進行身份驗證
- AuthName 發送給客戶端報文頭內容:WWW-Authenticate
- AuthType 認證類型
- AuthUserFile 這個就是剛剛生成的用戶名密碼文件
- Require 指定哪些用戶或組才能被授權訪問。如:
- require user test test2(只有用戶 test 和 test2 可以訪問)
- requires groups managers (只有組 managers 中成員可以訪問)
- require valid-user (在 AuthUserFile 指定的文件中任何用戶都可以訪問)
我們來看一下效果:
在瀏覽器訪問:
cURL請求:
* Trying 10.223.28.1...
* Connected to pma.979137.com (10.223.28.1) port 80 (#0)
> GET /test.php HTTP/1.1
> Host: pma.979137.com
> User-Agent: curl/7.43.0
> Accept: */*>
401 Authorization Required
>Authorization Required
This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn"t understand how to supply
the credentials required.
在沒有攜帶用戶名和密碼時,HTTP Code 返回了 401,並輸出了 Authorization Required!
表示需要該請求需要進行認證!
我們再來看下,攜帶密碼請求:
* Trying 10.223.28.1...
* Connected to pma.979137.com (10.223.28.1) port 80 (#0)
* Server auth using Basic with user "test"
> GET /test.php HTTP/1.1
> Host: pma.979137.com
> Authorization: Basic c2hpbGlhbmd4aWU6YWl5aTEzMTQ=
> User-Agent: curl/7.43.0
> Accept: */*
>
HTTP Code 已經是 200 了,並且返回了正確的內容!
至此,一個簡單的 Basic 認證就OK了!這種認證一般可用於瀏覽器訪問,也可以用於 API 認證!
※南京最時髦野餐指南
※哄娃吃飯原來也能這麼6,全靠選對一把好餐椅!
TAG:全球大搜羅 |