我使用 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/