Authentik 身份提供者搭建

Authentik 是一款功能强大的开源身份提供者(Identity Provider),使用 Python/Django 构建,支持 OAuth2、OIDC、SAML、LDAP 和 SCIM 等多种协议。Authentik 最突出的特点是其灵活的"流程"(Flow)系统,允许你完全自定义认证、注册和恢复等用户流程。它还内置了应用代理功能,可以为不支持 SSO 的应用添加认证层。

一、系统要求

  • 操作系统:Ubuntu 20.04+(推荐 Ubuntu 22.04)。
  • 内存:至少 2GB,建议 4GB。
  • Docker:需要预先安装 Docker 和 Docker Compose

二、Docker Compose 部署

2.1 下载官方配置文件

mkdir -p /opt/authentik && cd /opt/authentik
wget https://goauthentik.io/docker-compose.yml

2.2 创建环境变量文件

cat > .env <<'EOF'
PG_PASS=AuthentikDBPass123
AUTHENTIK_SECRET_KEY=$(openssl rand -base64 36)
AUTHENTIK_ERROR_REPORTING__ENABLED=false

# SMTP 配置(可选,用于发送邮件)
# AUTHENTIK_EMAIL__HOST=smtp.your-domain.com
# AUTHENTIK_EMAIL__PORT=587
# AUTHENTIK_EMAIL__USERNAME=noreply@your-domain.com
# AUTHENTIK_EMAIL__PASSWORD=your-smtp-password
# AUTHENTIK_EMAIL__USE_TLS=true
# AUTHENTIK_EMAIL__FROM=noreply@your-domain.com
EOF

生成安全密钥:

echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 36)" >> .env

2.3 启动服务

docker compose pull
docker compose up -d

Authentik 默认在 9000 端口(HTTP)和 9443 端口(HTTPS)启动。

三、Nginx 反向代理

cat > /etc/nginx/sites-available/authentik <<'EOF'
server {
    listen 443 ssl http2;
    server_name auth.your-domain.com;

    ssl_certificate /etc/letsencrypt/live/auth.your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/auth.your-domain.com/privkey.pem;

    location / {
        proxy_pass https://127.0.0.1:9443;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
EOF

ln -sf /etc/nginx/sites-available/authentik /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

四、初始化设置

在浏览器中访问 https://auth.your-domain.com/if/flow/initial-setup/,设置管理员密码。首次设置后,通过管理界面进入 Admin 面板。

五、创建应用和提供者

Authentik 中的核心概念:

  • Provider:定义认证协议(OAuth2、SAML、LDAP 等)。
  • Application:将 Provider 与具体的应用关联。
  • Flow:定义认证、注册等用户操作的流程。

5.1 创建 OAuth2/OIDC Provider

在管理界面中创建新的 Provider:

  • 进入 Applications -> Providers,选择"OAuth2/OpenID Provider"。
  • 填写名称,设置 Authorization flow 和 Redirect URIs。
  • 记录生成的 Client ID 和 Client Secret。

5.2 创建 Application

  • 进入 Applications -> Applications,点击"Create"。
  • 填写应用名称、Slug、选择关联的 Provider。
  • 配置应用图标和启动 URL。

六、LDAP 支持

Authentik 可以作为 LDAP 服务器,为不支持 OAuth/OIDC 的传统应用提供认证。在 Docker Compose 中添加 LDAP Outpost:

# 在 docker-compose.yml 中添加
  ldap:
    image: ghcr.io/goauthentik/ldap
    container_name: authentik-ldap
    restart: always
    ports:
      - "389:3389"
      - "636:6636"
    environment:
      - AUTHENTIK_HOST=https://auth.your-domain.com
      - AUTHENTIK_INSECURE=false
      - AUTHENTIK_TOKEN=YOUR_OUTPOST_TOKEN

七、应用代理(Proxy Provider)

对于不支持 SSO 的应用,可以使用 Authentik 的 Proxy Provider 添加认证层。Authentik 会作为反向代理,在用户访问应用前先进行身份验证。

  • 创建 Proxy Provider,配置目标应用的 URL。
  • 部署 Proxy Outpost,将其指向目标应用。
  • 配置 Nginx 将请求转发到 Proxy Outpost。

八、自定义流程

Authentik 的 Flow 系统允许你使用可视化编辑器自定义认证流程:

  • Authentication:登录流程,可添加 MFA、验证码等步骤。
  • Enrollment:注册流程,可配置邮箱验证、手动审批等。
  • Recovery:密码恢复流程。
  • Unenrollment:账号注销流程。

九、数据备份

# 备份 PostgreSQL 数据
docker exec -t authentik-postgresql pg_dumpall -U authentik > /opt/backups/authentik_$(date +%Y%m%d).sql

# 定时备份
crontab -e
0 3 * * * docker exec -t authentik-postgresql pg_dumpall -U authentik > /opt/backups/authentik_$(date +\%Y\%m\%d).sql 2>&1

十、常见问题

Worker 容器不断重启

通常是内存不足导致,增加 VPS 内存或调整容器的内存限制。

邮件发送失败

检查 .env 文件中的 SMTP 配置是否正确。

总结

Authentik 是目前功能最全面的开源身份提供者之一,其灵活的 Flow 系统和丰富的协议支持使其适用于各种场景。在搬瓦工 VPS 上建议选择 2GB 以上内存的方案。选购请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 折扣。相关平台:Casdoor 教程Logto 教程Zitadel 教程

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。