gpt4 book ai didi

nginx - 通过 nginx 入口 Controller 进行基本身份验证

转载 作者:行者123 更新时间:2023-12-02 11:51:51 25 4
gpt4 key购买 nike

我在 AWS 上使用 nginx 入口 Controller ( https://kubernetes.github.io/ingress-nginx/deploy/ )。后端服务(来自 ECK 的 kibana:https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-operator-config.html)使用 HTTP 基本身份验证机制。

有没有办法调整 nginx 以便它向转发到我的服务的每个请求附加 Authorization: Basic header ,这样用户就不必输入密码?

此解决方案对我不起作用:

nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "Authorization: Basic encoded_credentals";

因为我仍然被提示输入密码。

最佳答案

这是一个使用包含 htpasswd 生成的文件的 secret 的入口规则。生成的文件命名为 auth 很重要(实际上 - secret 有一个 key data.auth),否则入口 Controller 返回 503。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-with-auth
annotations:
# type of authentication
nginx.ingress.kubernetes.io/auth-type: basic
# name of the secret that contains the user/password definitions
nginx.ingress.kubernetes.io/auth-secret: basic-auth
# message to display with an appropriate context why the authentication is required
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - foo'
spec:
rules:
- host: foo.bar.com
http:
paths:
- path: /
backend:
serviceName: http-svc
servicePort: 80

secret 创作
$ htpasswd -c auth foo
New password: <bar>
New password:
Re-type new password:
Adding password for user foo
$ kubectl create secret generic basic-auth --from-file=auth
secret "basic-auth" created
$ kubectl get secret basic-auth -o yaml
apiVersion: v1
data:
auth: Zm9vOiRhcHIxJE9GRzNYeWJwJGNrTDBGSERBa29YWUlsSDkuY3lzVDAK
kind: Secret
metadata:
name: basic-auth
namespace: default
type: Opaque

使用 curl 访问它,你应该得到 200 Ok。
$ curl -v http://10.2.29.4/ -H 'Host: foo.bar.com' -u 'foo:bar'

检查这个例子 here

关于nginx - 通过 nginx 入口 Controller 进行基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59824039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com