【发布时间】:2021-08-16 10:31:54
【问题描述】:
上下文:-
我正在关注https://kubernetes.github.io/ingress-nginx/examples/auth/external-auth/,通过使用入口为我的应用程序启用身份验证。
问题:-
我没有使用 https://httpbin.org/basic-auth/user/passwd 作为身份验证 URL,而是使用在同一命名空间中运行的服务的 FQDN。
所以我的注释看起来像:
annotations:
nginx.ingress.kubernetes.io/auth-url: http://myservice.mynamespace.svc.cluster.local:9995/auth/
其中 9995 是 myservice 公开 /auth/ 端点的端口
当我使用 curl 访问使用 -u 标志传递凭据的 API 时,此方法有效。curl -XGET "http://minikubeip/myapp/status/" -H "Content-Type: application/json" -u "$USERNAME:$PASSWORD"
回复:-{"status":"working"}
但是当我在浏览器中打开 http://minikubeip/myapp/status/ 时,它会立即返回 401 页面而不显示身份验证弹出窗口。
当我对 nginx.ingress.kubernetes.io/auth-url 使用 https://httpbin.org/basic-auth/user/passwd 时,curl 和浏览器都可以工作,浏览器会弹出一个窗口让我输入密码。
我检查了 httpbin.org,发现它是一个 GET endpoint,它返回 200 表示成功,401 表示失败。我的 /auth API 是完全一样的规范
我的问题是:我需要为浏览器做一些特殊的事情来显示基本身份验证弹出对话框吗?
【问题讨论】:
标签: nginx kubernetes basic-authentication minikube nginx-ingress