demoyuw / k8s

微服務Kubernetes與Docker開發實務班
18 stars 25 forks source link

Authentication 在 k8s ingress 的 Forward #20

Open maxcheng opened 3 years ago

maxcheng commented 3 years ago

老師您好: 請問k8s ingress不論使用Nginx 或是 Traefik 實作,都無法 forward authentication,請問老師有解決的辦法嗎?

demoyuw commented 3 years ago

authentication 是指SSL憑證嗎?

maxcheng commented 3 years ago

老師您好: 在k8s外面架設了Auth server,用來驗證使用者的權限,權限資料為JWT,需要傳入k8s內部的service,請問老師這個情況有辦法處理嗎?

demoyuw commented 3 years ago

JWT login Server 在k8s外,先呼叫Server取得JWT token,接著帶著JWT token 呼叫 k8s 上的 ingress 幫你forward到 UI or API Service上。

這樣Nginx ingress本身應該不用做特別Auth設定,Nginx 本身做L7層 (Http, Https, ftp)反向代理,不會去過濾你的封包有無帶JWT token,可以直接Forward。讓API or UI去認證JWT 正確性來允許或拒絕即可。

如果你有特別屬意讓Nginx幫你做JWT token認證,看文件是Nginx plus支援 https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-jwt-authentication/

K8s 是支援ingress 與ingress plus,不過ingress plus 就不是免費軟體,這點可能也須考量進去。