Apache HTTP Server 2.4 版
描述 | 一般 HTTP 驗證 |
---|---|
狀態 | 基本 |
模組識別碼 | auth_basic_module |
來源檔案 | mod_auth_basic.c |
相容性 | Apache 2.1 以上版本適用 |
此模組允許透過查看所提供資料中的使用者,將 HTTP 基本驗證用於限制存取。HTTP 精粹驗證由 mod_auth_digest
提供。此模組通常應與至少一個驗證模組結合使用,例如 mod_authn_file
,以及一個授權模組,例如 mod_authz_user
。
描述 | 設定是否將授權和驗證授予較低層級的模組 |
---|---|
語法 | AuthBasicAuthoritative On|Off |
預設值 | AuthBasicAuthoritative On |
情境 | 目錄、.htaccess |
覆寫 | AuthConfig |
狀態 | 基本 |
模組 | mod_auth_basic |
通常,每個列在 AuthBasicProvider
中的授權模組會嘗試驗證使用者,如果使用者在任一提供者中找不到,則存取會遭到拒絕。將 AuthBasicAuthoritative
指示明確設定為 Off
可以讓驗證和授權傳遞到其他非基於提供者的模組(如果沒有與供應的使用者 ID 相符的使用者 ID 或規則)。僅在將 mod_auth_basic
與未使用 AuthBasicProvider
指示進行組態的第三方模組結合時才需要這樣做。使用此類模組時,處理順序是由模組的原始碼決定的,無法進行組態。
描述 | 使用給予的使用者名稱和密碼表達式進行虛擬基本驗證 |
---|---|
語法 | AuthBasicFake off|使用者名稱 [密碼] |
預設值 | 無 |
情境 | 目錄、.htaccess |
覆寫 | AuthConfig |
狀態 | 基本 |
模組 | mod_auth_basic |
相容性 | Apache HTTP Server 2.4.5 及後續版本 |
指定的使用者名稱和密碼整合到授權標頭中,該標頭會傳遞到 Web 伺服器背後的伺服器或服務。使用者名稱和密碼欄位都使用 運算式分析器 來進行詮釋,這允許使用者名稱和密碼都根據要求的參數來設定。
如果沒有指定密碼,將會使用預設值「密碼」。若要停用 URL 空間的虛擬基本驗證,請指定「AuthBasicFake off」。
在這個範例中,我們傳遞固定的使用者名稱和密碼到後端伺服器。
<Location "/demo"> AuthBasicFake demo demopass </Location>
在這個範例中,我們傳遞從用戶端憑證中萃取的電子郵件地址,擴充 SSLOptions
指令中的 FakeBasicAuth 選項的功能。與 FakeBasicAuth 選項相同,密碼會設定為固定字串「密碼」。
<Location "/secure"> AuthBasicFake "%{SSL_CLIENT_S_DN_Email}" </Location>
擴充上述範例後,我們透過使用固定密語對電子郵件地址進行雜湊並傳遞雜湊到後端伺服器,產生密碼。這可用於進入不支援用戶端憑證的舊有系統。
<Location "/secure"> AuthBasicFake "%{SSL_CLIENT_S_DN_Email}" "%{sha1:passphrase-%{SSL_CLIENT_S_DN_Email}}" </Location>
<Location "/public"> AuthBasicFake off </Location>
描述 | 設定這個位置的驗證提供者 |
---|---|
語法 | AuthBasicProvider 提供者名稱 [提供者名稱] ... |
預設值 | AuthBasicProvider file |
情境 | 目錄、.htaccess |
覆寫 | AuthConfig |
狀態 | 基本 |
模組 | mod_auth_basic |
AuthBasicProvider
指令設定用於驗證這個位置 使用者的提供者。預設的 file
提供者由 mod_authn_file
模組實作。務必確認已在伺服器中提供所選的提供者模組。
<Location "/secure"> AuthType basic AuthName "private area" AuthBasicProvider dbm AuthDBMType SDBM AuthDBMUserFile "/www/etc/dbmpasswd" Require valid-user </Location>
依序查詢供應商直到有供應商找到符合請求使用者名稱的比對,此時這個唯一的供應商將會嘗試檢查密碼。無法驗證密碼不會導致控制權傳遞到後續供應商。
供應商實作於 mod_authn_dbm
、mod_authn_file
、mod_authn_dbd
、mod_authnz_ldap
和 mod_authn_socache
。
描述 | 檢查密碼是否與驗證供應商比對,就像實作摘要式驗證,而非基礎驗證。 |
---|---|
語法 | AuthBasicUseDigestAlgorithm MD5|Off |
預設值 | AuthBasicUseDigestAlgorithm Off |
情境 | 目錄、.htaccess |
覆寫 | AuthConfig |
狀態 | 基本 |
模組 | mod_auth_basic |
相容性 | Apache HTTP Server 2.4.7 及更新版本 |
通常,在使用基礎驗證時,在 AuthBasicProvider
中列出的供應商會嘗試透過檢查其儲存資料中的使用者名稱和關聯密碼來驗證使用者。已儲存的密碼通常加密過,但並非一定如此;每個供應商可選擇自己的密碼儲存方案。
在使用 AuthDigestProvider
和摘要式驗證時,供應商會執行類似的檢查,在其儲存資料中找到符合的使用者名稱。然而,不同於基礎驗證的情況,與每個已儲存使用者名稱關聯的數值必須是從使用者名稱、區域名稱和密碼組成的一個已加密的字串。(請參閱 RFC 2617 第 3.2.2.2 節 以取得有關用於此加密字串的格式的更多詳細資料。)
由於基礎驗證與摘要式驗證的儲存值存在差異,從摘要式驗證轉換成基礎驗證通常需要為所有使用者指派新的密碼,因為其現有密碼無法從強加於支援摘要式驗證供應商的密碼儲存方案中復原。
設定 AuthBasicUseDigestAlgorithm
指令為 MD5
會讓系統使用與摘要式驗證相同的加密格式檢查使用者的基礎驗證密碼。系統會先將由使用者名稱、區域名稱和密碼組成的字串使用 MD5 雜湊;然後將使用者名稱和這個加密字串傳遞給 AuthBasicProvider
中列出的供應商,就像將 AuthType
設定為 Digest
,並且實作摘要式驗證一樣。
透過使用 AuthBasicUseDigestAlgorithm
,網站可以從摘要式驗證切換到基礎驗證,而不需要使用者指派新的密碼。
AuthBasicUseDigestAlgorithm
設定為 MD5
時驗證使用者。如果使用其他提供者會導致錯誤回應,而且伺服器會拒絕存取。