docker-compose - traefik 和基本身份验证

标签 docker-compose basic-authentication traefik

我使用 traefik 1.7.14,我想为我的 grafana-docker-compose 服务使用基本身份验证。
我跟着例如https://medium.com/@xavier.priour/secure-traefik-dashboard-with-https-and-password-in-docker-5b657e2aa15f
但我也查看了其他来源。
在我的 docker-compose.yml我有grafana:

grafana: 
image: grafana/grafana 
labels: 
  - "traefik.enable=true" 
  - "traefik.backend=grafana" 
  - "traefik.port=3000" 
  - "traefik.frontend.rule=Host:grafana.my-domain.io" 
  - "traefik.frontend.entryPoints=http,https" 
  - "traefik.frontend.auth.basic.users=${ADMIN_CREDS}
ADMIN_CREDS 在我的 .env 中文件。我用 htpasswd -nbm my_user my_password 创建了内容我也试过 htpasswd -nbB my_user my_password对于不是 md5但是 bcrypt加密。
.env
ADMIN_CREDS=test:$apr1$f0uSe/rs$KGSQaPMD.352XdXIzsfyY0
你看:我没有在 .env 中转义 $ 符号文件。
当我在运行时检查我的容器时,我看到的加密密码与我的 .env 中的完全相同。文件!docker inspect 47aa3dbc3623 | grep test给我:
"traefik.frontend.auth.basic.users": "test:$apr1$f0uSe/rs$KGSQaPMD.352XdXIzsfyY0",
我还尝试将用户/密码字符串直接放入 docker-compose.yml。这次通过转义 $ 符号。
检查命令也成功了。
但是:当我调用我的 grafana-URL 时,我得到一个基本的身份验证对话框,当我输入我的用户/密码组合时,我总是得到一个
{"message":"Invalid username or password"}
这里还有什么问题?我目前不知道。

最佳答案

此消息实际上意味着您通过了 traefik 的基本身份验证。因为如果您输入无效凭据,基本身份验证窗口将再次弹出。
Grafana 本身使用基本身份验证,但这个失败了。
不要在生产中这样做:为了证明这一点,您可以将 grafana 配置为要求相同的用户和密码。然后它将接受转发的 traefik 基本身份验证并允许访问。
但是,您应该使用 traefik 或使用 grafana 基本身份验证设置基本身份验证。
您可能还想查看有关在反向代理后面运行 grafana 的信息:https://grafana.com/tutorials/run-grafana-behind-a-proxy/#1
尤其是 https://grafana.com/docs/grafana/latest/auth/auth-proxy/
除了转发 auth header 之外,另一个选择是禁用转发它:

labels:
...
- "traefik.http.middlewares.authGrafana.basicauth.removeheader=true"
现在您应该会看到 grafana 登录页面。

关于docker-compose - traefik 和基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58989573/

相关文章:

使用 Traefik 进行 Kubernetes 基本身份验证

docker - Traefik:同一域上的 http、https、ws、wss(docker swarm)

Docker Compose 何时使用镜像而不是构建

docker - 与Docker结合使用的RabbitMQ在运行时被替换成了Rabbitmq.config文件

ruby-on-rails-4 - 权限被拒绝 @ rb_sysopen - 日志/application.log (Errno::EACCES)

python - HTTP 基本身份验证在 python 3.4 中不起作用

docker - Kubernetes Pods 和 Docker Compose(s) (Composures?) 有什么区别?

spring - 使用当前 httpclient (4.x) 的 RestTemplate 基本或摘要身份验证

java - HTTP 基本身份验证 : Tomcat vs Jetty

amazon-s3 - traefik是否可以将index.html附加到空('/')路径?