快速上手 authentik:3 步搭好可自托管的身份认证与 SSO 中心
2026/9/5 19:26:44 网站建设 项目流程

快速上手 authentik:3 步搭好可自托管的身份认证与 SSO 中心

【免费下载链接】authentikThe authentication glue you need.项目地址: https://gitcode.com/GitHub_Trending/au/authentik

公司系统越来越多,员工却在每个系统里记一套账号:Grafana 一套、内部 OA 一套、LDAP 里还有一套。想统一登录,商业 IdP 按人头收费,数据还留在别人家。开源的 authentik 就是来解决这件事的:它是一个自托管的身份提供商(IdP),支持 SAML、OAuth2/OIDC、LDAP、RADIUS 等主流协议,帮你把"用户是谁"这件事集中管理。

项目定位:一个自托管的开源 IdP

authentik 官方给自己的定位是"authentication glue"(认证胶水):把分散在各处的用户来源、应用系统、认证策略粘合成一层统一身份。它适合两类人:

  • 中小团队:没有专职安全团队,但想让内部几十个工具共享一套登录;
  • 运维/平台工程师:需要在实验室到生产集群之间灵活选择部署方式,从 Docker Compose 单机到 Kubernetes 都可以。

代码主体是 Python(Django)+ Go + Rust 的多语言结构,MIT 协议开源。管理界面长这样:

它解决什么问题

不用单独罗列功能清单,直接看几个典型痛点:

账号分散、离职难清理。员工离职往往要挨个系统删账号。authentik 把用户集中存放在 Directory 里,应用只认它发的身份;用户支持按路径(类似文件夹)组织,配合组(Group)和绑定(Binding)控制谁能看到哪个应用,删除一个人就能切断全部访问。

协议太杂,接不动。老系统要 LDAP,SaaS 要 SAML,新应用要 OIDC,网络设备认 RADIUS。authentik 内置了 providers/ 目录下的全套协议 Provider(OAuth2、SAML、LDAP、RADIUS、Proxy、RAC、SCIM 等),一份用户数据可以同时服务这些协议。反过来,它也能把外部目录当作"来源(Source)"同步进来,比如把 Active Directory、Google Workspace、GitHub、企业微信等接成身份源,见 users-sources/sources/。

登录流程写死在代码里。"来自新地区的登录要加一步 MFA""新员工第一次登录要改密码"这类规则,商业产品往往只能在 UI 表单里勾选。authentik 把登录过程拆成可编排的 Flow 和 Stage(后文详述),逻辑在界面上拖出来,还能用策略(Policy)做条件判断。

快速上手:用 Docker Compose 跑起 authentik

官方推荐 Docker Compose 用于测试和小型生产环境(要求约 2 核 CPU / 2 GB 内存起步)。最小路径三步:

# 1. 下载官方 compose 文件并生成密钥 wget https://docs.goauthentik.io/compose.yml echo "PG_PASS=$(openssl rand -base64 36 | tr -d '\n')" >> .env echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60 | tr -d '\n')" >> .env # 2. 启动 docker compose pull && docker compose up -d
  1. 浏览器访问http://<服务器地址>:9000,在初始设置向导中给默认管理员akadmin设密码。

之后在管理界面里依次:Applications 里新建应用 + Provider(如 OAuth2/OpenID Connect)→ 拿到 Client ID/Secret 填进目标应用(如 Grafana)→ Directory 里建第一个用户,就完成了一次完整的 SSO 闭环。详细步骤可参考 first-steps 文档。

核心特性深解析

Flow / Stage:把登录流程变成可视化编辑器

是什么。authentik 把一次认证拆成"阶段(Stage)"——比如输入用户名密码、输入 TOTP 验证码、展示验证码、发送邮件——再用"流程(Flow)"把这些阶段按条件串起来,形成登录、注册、找回密码等完整旅程。

怎么用。在 Flow 编辑器里拖拽添加 Stage 节点、条件分支(Expression 语法)即可:

比如给默认登录流程加一个条件分支:request.geoip.country不是本国时,追加一个 TOTP 校验 Stage。改完即生效,不用发版。

适合谁。需要"条件化 MFA""分角色差异化登录体验"的团队。所有内置流程(初始设置、注册、恢复)本身也是 Flow,意味着你可以把它整个换掉。

Outposts:把认证能力"派"到网络各处

是什么。Outpost 是部署在目标系统旁的小型代理组件,负责代理认证、注入身份头等"重活"。Server 内置一个 embedded outpost,也可以按需再拉起独立的。

怎么用。在管理界面点击新建 Outpost,选择类型(Proxy / LDAP / RADIUS 等),如果宿主机开了 Docker,authentik 可以直接通过 Docker socket 帮你部署和管理,无需手工维护容器:

适合谁。两类场景:一是接老系统——给不支持现代 SSO 的应用套一层 Proxy Provider,把 Cookie/Basic Auth 换成 authentik 会话;二是让 LDAP/RADIUS 客户端(如网络设备、Windows 域控)直接指向 authentik 的 Outpost,而不必改客户端配置。

事件与审计:每次登录都留痕

是什么。authentik 的 events 模块把认证、管理操作、策略判定都记录成事件,可以按用户、应用、IP 检索,支持 diff 视图看配置变更前后差异,还能基于事件触发告警与通知。

怎么用。系统页的事件面板提供统计图表和详情对比:

适合谁。有等保/合规审计要求的组织。相比"事后翻应用日志",这里能直接回答"谁在什么时间、从哪个 IP、通过哪个应用登过陆"这类问题。

实战场景:从入职到多因子登录

新员工入职。在 Directory 邀请或创建用户 → 拉入对应的组 → 通过 Binding 让组自动获得对应应用可见性 → 邀请邮件里附带初始设置链接,新员工自己完成改密和 MFA 注册。整个过程不碰任何业务系统配置:

跨系统 SSO。给 Grafana 建一个 OAuth2 Provider,拿到 Client ID/Secret/Slug 填入 Grafana 配置,用户登录后直接落到 Grafana 首页;同一份用户身份可以同时驱动 SAML 应用、LDAP 客户端。应用之间互相信任,登录一次即可。

风险加验。在默认登录 Flow 的密码 Stage 之后加一个条件分支:新设备或异地 IP 时追加 WebAuthn/TOTP Stage;普通场景则直接放行。MFA 方式(TOTP、WebAuthn 密钥、短信、静态口令)在 stages/ 下都有现成实现。

authentik vs 商业 IdP:选型对比

社区版(MIT)与主流商业方案的关键差异(价格为常见公开报价量级,实际以厂商报价为准):

维度authentik 社区版OktaAuth0
许可成本免费约 $2~10/人/月,随功能档位上升免费额度后按 MAU 计费,约 $2~8/人/月
自托管完全支持,数据在自己机房基本仅 SaaS(企业级有限场景)基本仅 SaaS
协议SAML、OAuth2/OIDC、LDAP、RADIUS、Proxy、SCIM 等以 OIDC 为主,SAML 支持有限
流程定制Flow/Stage 全可视化 + 策略表单化 + 付费功能表单化 + Action 脚本
定制边界源码级API 层API 层
高可用/企业增强需自行搭建(HA 文档支持)产品内置产品内置

选择 authentik 的主要动因通常是:自托管与数据主权、成本、深度定制。代价也要说清楚:社区版的 HA、故障转移、合规报表需要你自己在 Kubernetes/反向代理层面搭建,官方企业版(见 enterprise/)才把这些打包成产品特性。

生产部署与运维要点

  • HA 与扩缩:Server 无状态,Kubernetes Helm 部署时可水平扩容 + 负载均衡;PostgreSQL 做主从。参考 high-availability 文档 与 install/kubernetes。
  • 反向代理与 HTTPS:生产环境务必前置 Nginx/Traefik 等处理 TLS,见 reverse-proxy 文档。注意内部统一 UTC,不要改容器时区(会影响 OAuth/SAML 签名校验)。
  • 镜像版本:官方已废弃:latesttag,固定使用具体版本 tag(如:2025.12);升级前读 upgrade 文档。
  • Docker socket 风险:Compose 默认把 Docker socket 挂进 worker 以便自动部署 Outpost,有权限放大风险;敏感环境可改用 socket proxy 或手工部署 Outpost。
  • 时钟与备份:数据库备份 +/media文件目录备份即可恢复;邮件(SMTP)建议配置,用于告警、找回和通知。

下一步

  • 部署细节:install-config 文档;应用接入:add-secure-apps 文档。
  • 想读源码或提 issue:git clone https://gitcode.com/GitHub_Trending/au/authentik,贡献流程见 CONTRIBUTING.md,开发环境说明见 website/docs/developer-docs/。
  • 建议现在就做一件事:在一台 2 核 2 GB 的机器上按上面的三步把 authentik 跑起来,给最顺手的那个应用(比如 Grafana 或 GitLab)接上 OAuth2 登录——跑通一次完整 SSO 后,再决定要不要把它作为团队统一 IdP。

【免费下载链接】authentikThe authentication glue you need.项目地址: https://gitcode.com/GitHub_Trending/au/authentik

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询