basic_auth
启用 HTTP 基本认证,可用于使用用户名和哈希密码来保护目录和文件。
注意:在明文 HTTP 上使用基本认证并不安全。 在决定用 HTTP 基本认证保护哪些内容时请谨慎。
当用户请求受保护的资源时,如果浏览器尚未提供凭据,浏览器会提示用户输入用户名和密码。如果 Authorization 头中存在正确的凭据,服务器将授予对该资源的访问权限。如果该头缺失或凭据不正确,服务器将返回 HTTP 401 Unauthorized。
Caddy 配置不接受明文密码;您必须在将密码放入配置之前对其进行哈希。caddy hash-password 命令可以帮助完成此操作。
在成功认证之后,{http.auth.user.id} 占位符将可用,包含已认证的用户名。
在 v2.8.0 之前,此指令名为 basicauth,为与其他指令保持一致而被重命名。
语法
basic_auth [<matcher>] [<hash_algorithm> [<realm>]] {
<username> <hashed_password>
...
}
-
<hash_algorithm> 是用于本配置中哈希的密码哈希算法(或 KDF)的名称。默认值:
bcrypt -
<realm> 是自定义的 realm 名称。
-
<username> 是用户名或用户 ID。
-
<hashed_password> 是密码哈希。
示例
要求对所有对 example.com 的请求进行认证:
example.com {
basic_auth {
# 用户名 "Bob",密码 "hiccup"
Bob $2a$14$Zkx19XLiW6VYouLHR5NmfOFU0z2GTNmpkT/5qqR7hx4IjWJPDhjvG
}
respond "Welcome, {http.auth.user.id}" 200
}
保护 /secret/ 中的文件,使只有 Bob 能访问它们(其他路径任何人都可见):
example.com {
root * /srv
basic_auth /secret/* {
# 用户名 "Bob",密码 "hiccup"
Bob $2a$14$Zkx19XLiW6VYouLHR5NmfOFU0z2GTNmpkT/5qqR7hx4IjWJPDhjvG
}
file_server
}