ForwardAuth Middleware

https://doc.traefik.io/traefik/middlewares/forwardauth/

创建中间件

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: lizhe-auth
spec:
  forwardAuth:
    address: http://192.168.194.181:3080/auth

我会使用 下面的nginx作为测试用的 真实服务

分别创建 traefik service 和 ingressroute
这里为了测试我们没有添加任何中间件

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: authingressroute
  namespace: lizhe
spec:
  entryPoints:
    - web
  routes:
  - match: Host(`auth.lizhe.com`)
    kind: Rule
    services:
    - name: authts
      kind: TraefikService
kind: TraefikService
metadata:
  name: authts
  namespace: lizhe
spec:
  weighted:
    services:
      - name: nginxsvc
        port: 80
        kind: Service

然后我们加入中间件

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: authingressroute
  namespace: lizhe
spec:
  entryPoints:
    - web
  routes:
  - match: Host(`auth.lizhe.com`)
    kind: Rule
    services:
    - name: authts
      kind: TraefikService
    middlewares:
      - name: lizhe-auth

再次访问 测试用 nginx

这里可以看到header中存在很多信息

我们用curl命令测试在header 中添加一些 token

直接关闭 auth 服务器,会得到 500 错误

这里为了观察被访问真实服务(刚才的nginx)是否能正确获得 request header 的token,我把nginx替换成了我们用来显示 request header 的 golang 程序

可以看到 request header 中的token被正确的在整个调用链上传递,至此,POC结束

Send a Message