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结束