跳到正文
Træfɪk

使用 OIDC 保护 API 访问

Traefik Hub 功能

此中间件仅在 Traefik Hub 中可用。进一步了解 Traefik Hub 的高级功能。

OpenID Connect 身份验证构建于 OAuth2 授权码流程之上(定义见 OAuth 2.0 RFC 6749 第 4.1 节)。 它通过将身份验证委托给外部提供商(Keycloak、Okta 等)来保护应用, 并获取最终用户的会话声明和作用域以用于授权。

为验证用户身份,中间件会重定向到身份验证提供商。 身份验证完成后,用户会被重定向回中间件,获得授权后才能访问上游应用,流程如下图所示:

OpenID Connect 身份验证流程


要让 OIDC 中间件使用请求提供的凭证,请应用以下配置:

apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: oidc-login
  namespace: apps
spec:
  plugin:
    oidc:
      issuer: MY_ISSUER_URL
      clientId: "urn:k8s:secret:oidc-client:client_id"
      clientSecret: "urn:k8s:secret:oidc-client:client_secret"
      redirectUrl: /oidc/callback
apiVersion: v1
kind: Secret
metadata:
  name: oidc-client
stringData:
  client_id: my-oauth-client-ID # Set your ClientID here
  client_secret: my-oauth-client-secret # Set your client secret here
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: secure-applications-apigateway-oauth2-client-credentials
  namespace: apps
spec:
  entryPoints:
    - websecure
  routes:
  - match: Path(`/my-app`)
    kind: Rule
    services:
    - name: whoami
      port: 80
    middlewares:
    - name: oidc-login
kind: Deployment
apiVersion: apps/v1
metadata:
  name: whoami
  namespace: apps
spec:
  replicas: 3
  selector:
    matchLabels:
      app: whoami
  template:
    metadata:
      labels:
        app: whoami
    spec:
      containers:
      - name: whoami
        image: traefik/whoami

---
apiVersion: v1
kind: Service
metadata:
  name: whoami
  namespace: apps
spec:
  ports:
  - port: 80
    name: whoami
  selector:
    app: whoami

高级配置

高级选项见参考页面。

例如,您可以了解如何自定义会话存储: - 使用 cookie(session 选项,默认行为) - 使用 Redis 存储。


在生产环境使用 Traefik OSS?

如果你在工作中使用 Traefik,可以考虑为 Traefik OSS 增加企业级 API 网关能力或商业支持。

为 Traefik OSS 增加 API 网关能力快捷且平滑,无需推倒重来,现有配置也会完整保留。请通过这个简短视频了解实际效果。


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

文档由 HeadFile Studio 翻译。

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