基于 Traefik 的 ForwardAuth 配置

打印 上一主题 下一主题

主题 587|帖子 587|积分 1761

前言

Traefik 是一个现代的 HTTP 反向代理和负载均衡器,使部署微服务变得容易。
Traefik 可以与现有的多种基础设施组件(Docker、Swarm 模式、Kubernetes、Marathon、Consul、Etcd、Rancher、Amazon ECS...)集成,并自动和动态地配置自己。
系列文章:
今天我们基于 Traefik on K8S 来详细说明如何通过 forwardauth 实现认证功能,并通过 ForwardAuth 和 OAuth 2.0 或 CAS 进行集成。
ForwardAuth 中间件将身份验证委托给外部服务。如果服务响应代码为 2XX,则授予访问权限并执行原始请求。否则,将返回身份验证服务器的响应。

ForwardAuth 的简单配置

创建 ForwardAuth 中间件,具体如下:
  1. apiVersion: traefik.containo.us/v1alpha1
  2. kind: Middleware
  3. metadata:
  4.   name: forward-auth
  5. spec:
  6.   forwardAuth:
  7.     # 路径视具体情况而定
  8.     address: http://your_auth_server/oauth2.0/validate
  9.     authResponseHeaders:
  10.       - Authorization
  11.     trustForwardHeader: true
复制代码
另外一般出于安全,会再加一些安全相关的 header, 如下:
  1. apiVersion: traefik.containo.us/v1alpha1
  2. kind: Middleware
  3. metadata:
  4.   name: secure-header
  5. spec:
  6.   headers:
  7.     browserXssFilter: true
  8.     contentTypeNosniff: true
  9.     customResponseHeaders:
  10.       Cache-Control: max-age=31536000
  11.       Pragma: no-cache
  12.       Set-Cookie: secure
  13.     forceSTSHeader: true
  14.     stsIncludeSubdomains: true
  15.     stsSeconds: 14400
复制代码
当然,也是出于安全,会用到 HTTP 重定向到 HTTPS.
之后,创建 IngressRoute 的示例配置如下:
  1. apiVersion: traefik.containo.us/v1alpha1
  2. kind: IngressRoute
  3. metadata:
  4.   name: alertmanager
  5. spec:
  6.   routes:
  7.     - kind: Rule
  8.       match: Host(`ewhisper.cn`) && PathPrefix(`/alertmanager/`)
  9.       middlewares:
  10.         - name: redirectshttps
  11.         - name: secure-header
  12.         - name: forward-auth
  13.       services:
  14.         - name: alertmanager
  15.           port: 9093
复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表