文档
一个 项目

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> 是自定义领域名称。

  • <username> 是用户名或用户 ID。

  • <hashed_password> 是密码哈希。

  • <salt_base64> 是密码盐的 Base-64 编码,如果需要外部盐。这仅在现在已弃用的 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
}