
一个轻量级的转发认证服务,为Traefik反向代理/负载均衡器提供登录和认证功能,使用Apache基本认证(htpasswd)文件。基于https://github.com/thomseddon/traefik-forward-auth%E7%9A%84%E6%A6%82%E5%BF%B5%EF%BC%8C%E4%BD%86%E4%BD%BF%E7%94%A8%E6%96%87%E4%BB%B6%E5%9E%8B%E8%AE%A4%E8%AF%81%E6%8F%90%E4%BE%9B%E8%80%85%E6%9B%BF%E4%BB%A3%E4%BA%86Google/OIDC%E3%80%82
适用于需要为Traefik代理的服务添加简单认证保护的场景,特别是:
以下是使用docker-compose部署authentik与Traefik的示例配置:
yamlversion: '3' services: traefik: image: traefik:1.7 command: [ "--web", "--docker", "--docker.domain=docker.localhost" ] depends_on: - "authentik" ports: - "80:80" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro networks: traefik-net: public-net: labels: - "traefik.port=8080" - "traefik.frontend.rule=Host:traefik.docker.localhost" - "traefik.frontend.auth.forward.address=http://authentik:4567/auth" - "traefik.frontend.auth.forward.trustForwardHeader=true" - "traefik.frontend.auth.forward.authResponseHeaders=X-Forwarded-User" authentik: image: hermanosgecko/authentik:latest environment: - INSECURE_COOKIE=true # 示例未使用HTTPS,生产环境请勿使用 - COOKIE_DOMAIN=docker.localhost - AUTH_HOST=auth.docker.localhost - SECRET=THIS_IS_A_SECRET networks: traefik-net: aliases: - "authentik" volumes: - ${PWD}/htpasswd:/htpasswd:ro labels: - "traefik.port=4567" - "traefik.frontend.rule=Host:auth.docker.localhost" - "traefik.frontend.auth.forward.address=http://authentik:4567/auth" - "traefik.frontend.auth.forward.trustForwardHeader=true" - "traefik.frontend.auth.forward.authResponseHeaders=X-Forwarded-User" whoami: image: stefanscherer/whoami:latest networks: traefik-net: labels: - "traefik.port=8080" - "traefik.frontend.rule=Host:whoami.docker.localhost" - "traefik.frontend.auth.forward.address=http://authentik:4567/auth" - "traefik.frontend.auth.forward.trustForwardHeader=true" - "traefik.frontend.auth.forward.authResponseHeaders=X-Forwarded-User" networks: traefik-net: internal: true public-net:
容器镜像通过运行时参数进行配置,格式为<外部>:<内部>。例如,-p 8080:80表示将容器内的80端口映射到主机的8080端口。
| 参数 | 功能 |
|---|---|
-p 4567 | authentik Web界面的端口 |
-e COOKIE_DOMAIN=mydomain.com | Cookie的作用域域名(必填) |
-e AUTH_HOST=auth.mydomain.com | 登录页面的子域名,必须是COOKIE_DOMAIN的子域,无需包含协议或路径(必填) |
-e SECRET=THIS_IS_A_SECRET | 用于签名认证Cookie的密钥,建议使用随机值(如openssl rand -hex 16生成)(必填) |
-e COOKIE_NAME=tokenname | Cookie名称,默认为authentik.token |
-e INSECURE_COOKIE=true | 当客户端与Traefik之间不使用HTTPS时启用,此时Cookie将不设置Secure属性,默认为False |
-e LIFETIME=86400 | 认证会话有效期(秒),默认为86400(24小时) |
-v /htpasswd | htpasswd文件的挂载路径 |
用户文件
通过htpasswd文件限制可登录用户。支持的密码格式包括Apache MD5、SHA1、libc crypt或纯文本,同一文件中可混合使用不同加密类型的密码。
转发头
认证后的用户信息通过X-Forwarded-User头传递,需在Traefik配置中添加authResponseHeaders=X-Forwarded-User(如示例中的labels配置)。
操作流程
app10.test.com/home/pagetest.com域下设置认证Cookieapp10.test.com/home/page注意:必须确保
AUTH_HOST是COOKIE_DOMAIN的子域,且指向authentik容器的请求已正确路由(如示例中通过Traefik labels配置)。
https://github.com/hermanosgecko/authentik/blob/master/LICENSE
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务