<span class="nav-link-with-icon">APIKey <img src="https://doc.traefik.io/traefik-hub/img/ps-traefik-hub-logo-light.svg" class="menu-icon" alt="Traefik Hub API Gateway"></span>
Traefik Hub 功能
此中间件仅在 Traefik Hub 中提供。了解更多 Traefik Hub 高级功能。
API 密钥认证中间件通过要求客户端在 HTTP 请求头、Cookie 或查询参数中提供密钥来保护 API。密钥可以经过 base64 编码,也可以不编码。
配置示例¶
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: test-apikey
namespace: apps
spec:
plugin:
apiKey:
keySource:
headerAuthScheme: Bearer
header: Authorization
secretNonBase64Encoded: true
secretValues:
- "urn:k8s:secret:apikey:secret"
- "urn:k8s:secret:apikey:othersecret" apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: apikey
namespace: whoami
stringData:
secret: $2y$05$D4SPFxzfWKcx1OXfVhRbvOTH/QB0Lm6AXTk8.NOmU4rPLX2t6UUuW # htpasswd -nbB "" foo | cut -c 2-
othersecret: $2y$05$HbLL.g5dUqJippH0RuAGL.RaM9wNS2cT7hp6.vbv5okdCmVBSDzzK # htpasswd -nbB "" bar | cut -c 2-配置选项¶
| 字段 | 说明 | 默认值 | 必填 |
|---|---|---|---|
keySource.header |
定义包含客户端所发送密钥的请求头名称。 必须设置 keySource.header、keySource.query 或 keySource.cookie 其中之一。 |
"" | 否 |
keySource.headerAuthScheme |
使用 Authorization 作为请求头名称时,定义认证方案。参阅 Authorization 请求头文档。 |
"" | 否 |
keySource.query |
定义包含客户端所发送密钥的查询参数名称。 必须设置 keySource.header、keySource.query 或 keySource.cookie 其中之一。 |
"" | 否 |
keySource.cookie |
定义包含客户端所发送密钥的 Cookie 名称。 必须设置 keySource.header、keySource.query 或 keySource.cookie 其中之一。 |
"" | 否 |
secretNonBase64Encoded |
定义客户端发送的密钥是否经过 base64 编码。 | false | 否 |
secretValues |
包含 API 密钥的哈希值。 支持的哈希算法为 Bcrypt、SHA1 和 MD5。 应使用 htpasswd 生成哈希值。可使用 URN 格式引用 Kubernetes Secret: urn:k8s:secret:[name]:[valueKey]。 |
[] | 是 |
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为 Traefik OSS 增加企业级 API 网关能力或商业支持。
为 Traefik OSS 增加 API 网关能力快捷且平滑,无需推倒重来,现有配置也会完整保留。请通过这个简短视频了解实际效果。