【原創】Apache HTTP Server認證初探
啃了幾天的,並經過一些實測,關於Apache HTTP Server認證,有些心得,記錄於此。閒話少說,這就開始。以下敘述均基於Apache HTTP Server 2.2。
所謂認證,最常見的場景就是在設定家庭路由器時,需要輸入使用者名稱和密碼,如果輸入錯誤或者取消認證,則頁面會提示HTTP 401錯誤——"Authorization Required"。
HTTPD的認證分為Basic和Digest兩種模式,Basic方式以明文方式向伺服器端提交使用者名稱和密碼,而Digest方式以加密方式向伺服器端提交使用者名稱和密碼。Digest方式顯然更安全一些。
兩種認證方式是可以並存的,至少在2.2版及windows平臺上是這樣的。網上有描述說二者不能並存的說法是錯誤的,至少不完全正確。
HTTP Server要對使用者身份進行認證,必須得能訪問到儲存使用者憑據的東東——認證源。認證源可以是檔案(file)、DBM檔案(DBM File)、LDAP、DBD(SQL Database),目前我就知道這四個,後面沒有“等”字。解釋一下DBM,它有SDBM、GDBM、NDBM和DB等格式,它實質上是一個非常簡單的可以高效訪問的Key-Value資料庫,其中的“DB”指的就是“Berkeley DB 2”。SQL Database?對,你沒看錯,HTTPD支援從SQL Database中獲取資訊來認證使用者,包括Oracle、MySql、PostgreSQL、SqLite等,也可以透過ODBC介面連線到其他資料庫(例如MSSQL)。例如,你可以在httpd.conf中像下面這樣配置,透過DB認證一個使用者是否合法:
HTTPD的安裝包裡同樣提供了很多認證相關的工具,比如htdbm、htdigest、htpasswd、httxt2dbm,這幾個是可以直接執行的,還有個dbmmanage,是perl指令碼寫的,在windows下,你必須安裝一個perl的環境才能使用。詳閱
ps:關於DBM File,摘錄一段簡明扼要的說明給大家看:
DBM is an acronym which stands for Data Base Management
A DBM file is simply a binary database of key-value pairs
Perl enables you to "bind" an associative array variable to a DBM file using the dbmopen() function
The contents of the DBM file may then be manipulated by simply referencing or assigning to the associative array variable!
關於DBM 檔案的原始碼研究可以參考這裡。
所謂認證,最常見的場景就是在設定家庭路由器時,需要輸入使用者名稱和密碼,如果輸入錯誤或者取消認證,則頁面會提示HTTP 401錯誤——"Authorization Required"。
HTTPD的認證分為Basic和Digest兩種模式,Basic方式以明文方式向伺服器端提交使用者名稱和密碼,而Digest方式以加密方式向伺服器端提交使用者名稱和密碼。Digest方式顯然更安全一些。
兩種認證方式是可以並存的,至少在2.2版及windows平臺上是這樣的。網上有描述說二者不能並存的說法是錯誤的,至少不完全正確。
HTTP Server要對使用者身份進行認證,必須得能訪問到儲存使用者憑據的東東——認證源。認證源可以是檔案(file)、DBM檔案(DBM File)、LDAP、DBD(SQL Database),目前我就知道這四個,後面沒有“等”字。解釋一下DBM,它有SDBM、GDBM、NDBM和DB等格式,它實質上是一個非常簡單的可以高效訪問的Key-Value資料庫,其中的“DB”指的就是“Berkeley DB 2”。SQL Database?對,你沒看錯,HTTPD支援從SQL Database中獲取資訊來認證使用者,包括Oracle、MySql、PostgreSQL、SqLite等,也可以透過ODBC介面連線到其他資料庫(例如MSSQL)。例如,你可以在httpd.conf中像下面這樣配置,透過DB認證一個使用者是否合法:
# mod_dbd configuration這使得HTTPD的認證源更加安全,因為其完全可以部署在另外一臺伺服器上。(可以避免被破壞,但http伺服器被攻破後,別人是可以從配置檔案中查到資料庫的連線資訊從而獲得使用者的認證憑據的)
DBDriver pgsql
DBDParams "dbname=apacheauth user=apache password=xxxxxx"
DBDMin 4
DBDKeep 8
DBDMax 20
DBDExptime 300
# core authentication and mod_auth_basic configuration
# for mod_authn_dbd
AuthType Basic
AuthName "My Server"
AuthBasicProvider dbd
# core authorization configuration
Require valid-user
# mod_authn_dbd SQL query to authenticate a user
AuthDBDUserPWQuery \
"SELECT password FROM authn WHERE user = %s"
HTTPD的安裝包裡同樣提供了很多認證相關的工具,比如htdbm、htdigest、htpasswd、httxt2dbm,這幾個是可以直接執行的,還有個dbmmanage,是perl指令碼寫的,在windows下,你必須安裝一個perl的環境才能使用。詳閱
ps:關於DBM File,摘錄一段簡明扼要的說明給大家看:
DBM is an acronym which stands for Data Base Management
A DBM file is simply a binary database of key-value pairs
Perl enables you to "bind" an associative array variable to a DBM file using the dbmopen() function
The contents of the DBM file may then be manipulated by simply referencing or assigning to the associative array variable!
關於DBM 檔案的原始碼研究可以參考這裡。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29867/viewspace-708246/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AKA認證初探
- Http基本認證HTTP
- HTTP認證之基本認證——Basic(一)HTTP
- HTTP認證之基本認證——Basic(二)HTTP
- HTTP認證之摘要認證——Digest(一)HTTP
- http authorization 基本認證HTTP
- Hyperf 下 http 認證元件HTTP元件
- HTTP認證模式:Basic & DigestHTTP模式
- Holer實現外網訪問本地Apache HTTP ServerApacheHTTPServer
- 壓力測試工具ab - Apache HTTP server benchmarking toolApacheHTTPServer
- 為 Eureka 新增 Http Basic 認證HTTP
- 如何使用「原本」認證原創文章,保護自己的版權
- k8s之API Server認證K8SAPIServer
- PHP介面HTTP安全認證之Basic模式PHPHTTP模式
- 初探Http快取?HTTP快取
- RSA及其證明 [原創]
- 各種程式語言忽略http的SSL證書認證HTTP
- http包serverHTTPServer
- EMQX_AUTH_HTTP 認證外掛使用指南MQHTTP
- Windows 11 & Server 2022 HLK kit WHQL認證注意事項WindowsServer
- 【漏洞修復通知】修復Apache Shiro認證繞過漏洞Apache
- apache 如何避免SSL配置影響原來HTTP的站點配置ApacheHTTP
- Apache ZooKeeper - 事件監聽機制初探Apache事件
- EMQX 登入認證,通過外部自建HTTP服務控制MQHTTP
- 【原創】Linux虛擬化KVM-Qemu分析(八)之virtio初探Linux
- http server原始碼解析HTTPServer原始碼
- 「Adobe國際認證」創意與功能設計
- 初步認識Apache IgniteApache
- 雲端計算學習路線教程大綱課件:HTTP Server: Apache知識點HTTPServerApache
- 精講RestTemplate第9篇-如何通過HTTP Basic Auth認證RESTHTTP
- HTTP權威指南學習-第12章 基本認證機制HTTP
- 初探驗證碼識別
- SQL Server正確刪除Windows認證使用者的方法教程SQLServerWindows
- 拼多多版http-serverHTTPServer
- 認證授權方案之JwtBearer認證JWT
- 中止請求和超時 跨域的HTTP請求 認證方式 JSONP跨域HTTPJSON
- 高效能 HTTP 客戶端 undici 初探HTTP客戶端
- kubernetes實踐之七:安全機制API Server認證之Service Account TokenAPIServer
- Identity Server 4 從入門到落地(十二)—— 使用Nginx整合認證服務IDEServerNginx