Apache HTTP Server 第 2.4 版
說明 | 使用 SQL 資料庫進行使用者驗證 |
---|---|
狀態 | 擴充功能 |
模組識別碼 | authn_dbd_module |
來源檔案 | mod_authn_dbd.c |
相容性 | 可於 Apache 2.1 及更新版本取得 |
本模組提供驗證前端,例如 mod_auth_digest
和 mod_auth_basic
,可透過在 SQL 表格中尋找使用者進行驗證。例如,mod_authn_file
提供類似功能。
本模組仰賴 mod_dbd
指定後端資料庫驅動程式和連線參數,並管理資料庫連線。
在使用 mod_auth_basic
或 mod_auth_digest
時,透過 AuthBasicProvider
或 AuthDigestProvider
以及 dbd
值呼叫本模組。
HTTPD 2.2/2.4 中 DBD 驗證的一些使用者回報它會給資料庫帶來問題負載。這很可能是因為一個 HTML 頁面包含數百個物件(例如圖片、腳本等),而每個物件都需要驗證。受到這種問題影響(或擔憂)的使用者應該使用 mod_authn_socache
來快取憑證,並從資料庫中移除大部分負載。
這個簡單的範例說明在驗證和 DBD 架構的脈絡下如何使用這個模組。
# mod_dbd configuration # UPDATED to include authentication caching DBDriver pgsql DBDParams "dbname=apacheauth user=apache password=xxxxxx" DBDMin 4 DBDKeep 8 DBDMax 20 DBDExptime 300 <Directory "/usr/www/myhost/private"> # mod_authn_core and mod_auth_basic configuration # for mod_authn_dbd AuthType Basic AuthName "My Server" # To cache credentials, put socache ahead of dbd here AuthBasicProvider socache dbd # Also required for caching: tell the cache to cache dbd lookups! AuthnCacheProvideFor dbd AuthnCacheContext my-server # mod_authz_core configuration Require valid-user # mod_authn_dbd SQL query to authenticate a user AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s" </Directory>
每次向資料庫伺服器進行查詢時,查詢在第一列中傳回的所有欄位值都會放置在環境中,並使用字首「AUTHENTICATE_」的環境變數。
如果資料庫查詢例如回傳使用者的使用者名稱、全名和電話號碼,CGI 程式可以存取這些資訊,無需執行第二次獨立資料庫查詢來收集這些額外資訊。
這可能會大幅簡化部分網路應用程式中需要的編碼和設定。
說明 | SQL 查詢以查詢使用者的密碼 |
---|---|
語法 | AuthDBDUserPWQuery 查詢 |
目錄 | 目錄 |
狀態 | 擴充功能 |
模組 | mod_authn_dbd |
AuthDBDUserPWQuery
指令指定 SQL 查詢以查詢指定使用者的密碼。執行 SQL 查詢時,使用者的 ID 會傳遞為單一字串參數。它可以在查詢陳述中使用 %s
格式說明符來參照。
AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"
查詢陳述回傳的第一列第一行值應為含有加密密碼的字串。後續列會略過。如果未回傳任何列,使用者將不會透過 mod_authn_dbd
通過驗證。
查詢陳述回傳的第一列中任何額外的欄位值會儲存為環境變數,名稱格式為 AUTHENTICATE_欄
。
加密密碼格式取決於使用的驗證前端(例如 mod_auth_basic
或 mod_auth_digest
)。有關更多資訊,請參閱 密碼格式。
說明 | SQL 查詢以查詢使用者的密碼雜湊和領域。 |
---|---|
語法 | AuthDBDUserRealmQuery 查詢 |
目錄 | 目錄 |
狀態 | 擴充功能 |
模組 | mod_authn_dbd |
AuthDBDUserRealmQuery
指定 SQL 查詢以在摘要驗證程序中查詢指定使用者的密碼和領域。執行 SQL 查詢時,使用者的 ID 和領域會按此順序傳遞為字串參數。它們可以在查詢陳述中使用 %s
格式說明符來參照。
AuthDBDUserRealmQuery "SELECT password FROM authn WHERE user = %s AND realm = %s"
查詢陳述回傳的第一列第一行值應為含有加密密碼的字串。後續列會略過。如果未回傳任何列,使用者將不會透過 mod_authn_dbd
通過驗證。
查詢陳述回傳的第一列中任何額外的欄位值會儲存為環境變數,名稱格式為 AUTHENTICATE_欄
。
加密密碼格式取決於使用的驗證前端(例如 mod_auth_basic
或 mod_auth_digest
)。有關更多資訊,請參閱 密碼格式。