DigestAuth
DigestAuth 中间件只允许经过授权的用户访问服务。
配置示例¶
# Declaring the user list
http:
middlewares:
test-auth:
digestAuth:
users:
- "test:traefik:a2688e031edb4be6a3797f3882655c05"
- "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"# Declaring the user list
[http.middlewares]
[http.middlewares.test-auth.digestAuth]
users = [
"test:traefik:a2688e031edb4be6a3797f3882655c05",
"test2:traefik:518845800f9e2bfb1f1f740ec24f074e",
]# Declaring the user list
labels:
- "traefik.http.middlewares.test-auth.digestauth.users=test:traefik:a2688e031edb4be6a3797f3882655c05,test2:traefik:518845800f9e2bfb1f1f740ec24f074e"// Declaring the user list
{
//...
"Tags" : [
"traefik.http.middlewares.test-auth.digestauth.users=test:traefik:a2688e031edb4be6a3797f3882655c05,test2:traefik:518845800f9e2bfb1f1f740ec24f074e"
]
}# Declaring the user list
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: test-auth
spec:
digestAuth:
secret: userssecret配置选项¶
| 字段 | 说明 | 默认值 | 必填 |
|---|---|---|---|
users |
授权用户数组。每个用户必须使用 name:realm:encoded-password 格式声明。users 选项支持 Kubernetes Secret。(更多信息见此处) |
[] | 否 |
usersFile |
包含此中间件授权用户的外部文件路径。 文件内容是 name:realm:encoded-password 列表。(更多信息见此处) |
"" | 否 |
realm |
允许自定义认证域。 | "traefik" | 否 |
headerField |
允许定义用于存储已认证用户的请求头字段。 | "" | 否 |
removeHeader |
允许在将请求转发给服务之前移除认证请求头。 | false | 否 |
密码格式¶
使用 htdigest 生成密码。
users 与 usersFile¶
- 如果同时提供
users和usersFile,两者将合并。users中的值优先于usersFile中的内容。 - 由于在 Kubernetes 中无法引用文件路径,因此 Kubernetes IngressRoute 不使用
users和usersFile字段,而应使用secret字段。
Kubernetes Secret 资源¶
在 Kubernetes 上不使用 users 或 usersFile 字段,而是在 Middleware 资源中通过 secret 字段引用 Kubernetes Secret。此 Secret 可以是以下两种类型之一:
kubernetes.io/basic-auth secret:此 Secret 类型包含username和password两个键,但通常适用于用户数量较少的情况。请注意,这些键没有经过任何哈希或加密处理,因此安全性低于另一种方式。- 带有 users 字段的 Opaque Secret:此 Secret 包含一个字符串字段(通常名为
users),每行表示一个用户。这种方式可以在一个 Secret 中存储多个用户。
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为 Traefik OSS 增加企业级 API 网关能力或商业支持。
为 Traefik OSS 增加 API 网关能力快捷且平滑,无需推倒重来,现有配置也会完整保留。请通过这个简短视频了解实际效果。