【原創】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基本認證】HTTP
- HTTP認證之基本認證——Basic(一)HTTP
- HTTP認證之基本認證——Basic(二)HTTP
- HTTP認證之摘要認證——Digest(一)HTTP
- http authorization 基本認證HTTP
- Hyperf 下 http 認證元件HTTP元件
- Apache (http server)的詳細介紹ApacheHTTPServer
- 為 Eureka 新增 Http Basic 認證HTTP
- HTTP認證模式:Basic & DigestHTTP模式
- HTTP基礎認證Basic AuthenticationHTTP
- 為ElasticSearch新增HTTP基本認證ElasticsearchHTTP
- PHP的HTTP認證機制PHPHTTP
- Apache Http Server和Tomcat 之區別ApacheHTTPServerTomcat
- nginx,apache的alias和認證功能NginxApache
- apache官網怎樣下載apache HTTP Server伺服器ApacheHTTPServer伺服器
- 原創之apache指令大全(轉)Apache
- 【原創】激動人心的Exadata初探
- Apache Hadoop管理認證培訓(Cloudera)ApacheHadoopCloud
- Holer實現外網訪問本地Apache HTTP ServerApacheHTTPServer
- PHP介面HTTP安全認證之Basic模式PHPHTTP模式
- 各種程式語言忽略http的SSL證書認證HTTP
- k8s之API Server認證K8SAPIServer
- 壓力測試工具ab - Apache HTTP server benchmarking toolApacheHTTPServer
- 初探Http快取?HTTP快取
- Cloudera Certified Administrator for Apache Hadoop(CCAH認證)CloudApacheHadoop
- [翻譯-Shiro]-Apache Shiro Java認證指南ApacheJava
- zt_如何安裝部署ibm http web server_apacheIBMHTTPWebServerApache
- [原創]汽車動力系統ECU韌體逆向工程初探
- 初探SQL Server MDXSQLServer
- EMQX_AUTH_HTTP 認證外掛使用指南MQHTTP
- HTTP使用BASIC認證的原理及實現方法HTTP
- 使用帶有SQL Server加密技術的認證SQLServer加密
- 基於MySQL的Apache使用者認證例項(轉)MySqlApache
- 創惟Storage Controller獲微軟WHQL認證Controller微軟
- apache 如何避免SSL配置影響原來HTTP的站點配置ApacheHTTP
- EMQX 登入認證,通過外部自建HTTP服務控制MQHTTP