basicauth
啟用 HTTP 基本驗證,可使用使用者名稱和雜湊密碼來保護目錄和檔案。
請注意,基本驗證在純文字 HTTP 上並不安全。決定要使用 HTTP 基本驗證保護哪些內容時,請自行斟酌。
當使用者要求受保護的資源時,如果使用者尚未提供使用者名稱和密碼,瀏覽器會提示使用者輸入。如果授權標頭中存在正確的憑證,伺服器將授予對資源的存取權。如果標頭遺失或憑證不正確,伺服器將回應 HTTP 401 未授權。
Caddy 設定不接受純文字密碼;您必須在將密碼放入設定中之前對其進行雜湊。caddy hash-password
命令可以協助執行此作業。
驗證成功後,將可以使用 {http.auth.user.id}
佔位符,其中包含已驗證的使用者名稱。
語法
basicauth [<matcher>] [<hash_algorithm> [<realm>]] {
<username> <hashed_password> [<salt_base64>]
...
}
-
<hash_algorithm> 是此設定中雜湊使用的密碼雜湊演算法(或 KDF)的名稱。預設值:
bcrypt
-
<realm> 是自訂領域名稱。
-
<使用者名稱> 是使用者名稱或使用者 ID。
-
<雜湊密碼> 是密碼雜湊。
-
<salt_base64> 是密碼 salt 的 base-64 編碼,如果需要外部 salt。這僅適用於現在已不建議使用的
scrypt
演算法。可能會移除。
範例
要求對所有對 example.com
的請求進行驗證
example.com {
basicauth {
# Username "Bob", password "hiccup"
Bob $2a$14$Zkx19XLiW6VYouLHR5NmfOFU0z2GTNmpkT/5qqR7hx4IjWJPDhjvG
}
respond "Welcome, {http.auth.user.id}" 200
}
保護 /secret/
中的檔案,以便只有 Bob
可以存取它們(其他人可以查看其他路徑)
example.com {
root * /srv
basicauth /secret/* {
# Username "Bob", password "hiccup"
Bob $2a$14$Zkx19XLiW6VYouLHR5NmfOFU0z2GTNmpkT/5qqR7hx4IjWJPDhjvG
}
file_server
}