使用 OIDC 安全访问 API
使用 OIDC 安全访问 API — Traefik Hub 特性
提示
该中间件仅在 Traefik Hub 中可用。了解 Traefik Hub 的高级特性。
OpenID Connect Authentication 构建在 OAuth2 Authorization Code Flow 之上(定义在 OAuth 2.0 RFC 6749, section 4.1)。
它允许通过将身份认证委托给外部提供商(Keycloak、Okta 等)来保护应用,并获取最终用户的会话 claim 和 scope 用于授权。
为了认证用户,中间件通过认证提供商重定向。认证完成后,用户在获得访问上游应用的授权之前被重定向回中间件:
允许 OIDC 中间件使用请求提供的凭据
应用以下配置:
yaml
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/callbackKubernetes Secrets:
yaml
apiVersion: v1
kind: Secret
metadata:
name: oidc-client
stringData:
client_id: my-oauth-client-ID
client_secret: my-oauth-client-secret适用场景
- 企业 SSO:企业内部应用统一身份认证
- 第三方 IdP 集成:与 Auth0、Okta、Keycloak、Azure AD 等集成
- 多应用统一登录:多套应用共享同一个身份提供商
- 满足合规性要求:如 HIPAA、SOX、PCI DSS
- B2B 场景:跨组织身份认证
OIDC 优势
- 标准协议:被广泛支持
- 用户友好:用户使用现有 IdP 登录
- 安全:基于 OAuth 2.0 + 身份层
- 可扩展:支持 SSO、MFA、社交登录
- 丰富的用户信息:通过 ID Token 获取用户信息
最佳实践
- 使用 HTTPS:OIDC 通信必须使用 HTTPS
- 使用 state 参数:防止 CSRF 攻击
- 使用 PKCE:防止授权码拦截
- 短期 access token:access token 过期时间较短
- 使用 refresh token:实现长期会话
- 验证 issuer:确保 token 来自可信的 issuer
- 验证 audience:确保 token 颁发给你的应用
常见 OIDC 提供商
- Keycloak:开源,适合自托管
- Auth0:商业 SaaS
- Okta:商业 SaaS
- Azure AD:Microsoft 生态
- Google Workspace:Google 生态
- GitHub OAuth:开发者场景
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。