使用 OIDC 保护 API 访问¶
Traefik Hub 功能
此中间件仅在 Traefik Hub 中可用。进一步了解 Traefik Hub 的高级功能。
OpenID Connect 身份验证构建于 OAuth2 授权码流程之上(定义见 OAuth 2.0 RFC 6749 第 4.1 节)。 它通过将身份验证委托给外部提供商(Keycloak、Okta 等)来保护应用, 并获取最终用户的会话声明和作用域以用于授权。
为验证用户身份,中间件会重定向到身份验证提供商。 身份验证完成后,用户会被重定向回中间件,获得授权后才能访问上游应用,流程如下图所示:

要让 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/callbackapiVersion: 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 hereapiVersion: 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-loginkind: 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在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为 Traefik OSS 增加企业级 API 网关能力或商业支持。
为 Traefik OSS 增加 API 网关能力快捷且平滑,无需推倒重来,现有配置也会完整保留。请通过这个简短视频了解实际效果。