跳到正文
Træfɪk

<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 网关能力快捷且平滑,无需推倒重来,现有配置也会完整保留。请通过这个简短视频了解实际效果。


版权所有 © 头文件软件工作室

文档由 HeadFile Studio 翻译。

Traefik v3.7 中文快照 · 原文版权归 Traefik Labs 及贡献者所有 · MIT 许可证