traefik 和基本身份验证

Tho*_*hen 5 basic-authentication docker-compose 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}
Run Code Online (Sandbox Code Playgroud)

ADMIN_CREDS 在我的.env文件中。我创建的内容与htpasswd -nbm my_user my_password 我也试过htpasswd -nbB my_user my_passwordmd5但是bcrypt加密。在.env

ADMIN_CREDS=test:$apr1$f0uSe/rs$KGSQaPMD.352XdXIzsfyY0
Run Code Online (Sandbox Code Playgroud)

你看:我没有在.env文件中转义 $ 符号。当我在运行时检查我的容器时,我看到与我的.env文件中完全相同的加密密码!

docker inspect 47aa3dbc3623 | grep test

给我:

"traefik.frontend.auth.basic.users": "test:$apr1$f0uSe/rs$KGSQaPMD.352XdXIzsfyY0",
Run Code Online (Sandbox Code Playgroud)

我还尝试将用户/密码字符串直接放入 docker-compose.yml。这次通过转义 $ 符号。检查命令也成功了。但是:当我调用我的 grafana-URL 时,我得到一个基本的身份验证对话框,当我输入我的用户/密码组合时,我总是得到一个

{"message":"Invalid username or password"}
Run Code Online (Sandbox Code Playgroud)

这里还有什么问题?我目前不知道。

Stu*_*uck 2

该消息实际上意味着您通过了 traefik 的基本身份验证。因为如果您输入无效凭据,基本身份验证窗口将再次弹出。

Grafana 本身使用基本身份验证,而这个失败了。

不要在生产中这样做:为了证明这一点,您可以配置 grafana 来要求相同的用户和密码。然后它将接受转发的 traefik 基本身份验证并允许访问。

但是,您应该使用 traefik 设置基本身份验证或使用 grafana 基本身份验证。

您可能还想检查有关在反向代理后面运行 grafana 的信息: https: //grafana.com/tutorials/run-grafana-behind-a-proxy/#1 和特别是https://grafana.com/docs/ grafana/最新/auth/auth-proxy/

除了转发身份验证标头之外,另一个选择是禁用转发:

labels:
...
- "traefik.http.middlewares.authGrafana.basicauth.removeheader=true"
Run Code Online (Sandbox Code Playgroud)

现在您应该看到 grafana 登录页面。