Authentik 介绍与选型指南
Authentik 2026.8.4 开源 SSO/IAM 平台介绍:三服务架构、Outpost 代理、Flows 流程编排、核心功能与 Keycloak/ZITADEL 选型对比,实例实测数据支撑
Authentik 介绍与选型指南
> 目标:说清 Authentik 是什么、由哪些部件组成、能解决什么问题,并与 Keycloak、ZITADEL 横向对比给出选型建议;全部数据来自 2026-10-18 在 Ubuntu 22.04 服务器上对 Authentik 2026.8.4 实例的实查。
一、环境信息
本篇所有版本号、API 响应、对象数量均为 2026-10-18 在本机部署实例上实查所得:
- 操作系统:Ubuntu 22.04(x86_64)
- Authentik 版本:2026.8.4(官方最新稳定版,2026-10-14 发布)
- 部署方式:官方推荐的三服务形态(server + worker + PostgreSQL 16)
- 访问地址:
http://<服务器IP>:13904(管理台与流程统一入口) - 数据目录:
/opt/data/authentik/(compose 文件、.env、data/、certs/、custom-templates/) - 实例状态与健康检查:
curl -s http://localhost:13904/-/health/ready/
实测返回 200(服务就绪)。版本自报接口实测:
curl -s -H "Authorization: Bearer <API Token>" http://localhost:13904/api/v3/admin/version/
实测返回:
{"version_current":"2026.8.4","version_latest":"2026.8.4","version_latest_valid":true,"build_hash":"","outdated":false,"outpost_outdated":false}
二、软件概述
Authentik 是一款开源身份与访问管理(IAM/SSO)平台,采用 MIT 许可证(其 OpenAPI Schema 的 license 字段实测标注 MIT),由 goauthentik 团队维护。它把「用户是谁(认证)」和「谁能访问什么(授权)」集中到一个平台,向内部所有应用统一提供登录能力。
它解决的核心痛点:
- 应用各自维护账号密码,员工/用户需要记忆多套凭据;
- 接入第三方身份协议(OAuth2/OIDC、SAML、LDAP 等)时每家应用都要重复开发;
- 缺少统一的登录流程编排能力(多因素认证、注册、密码找回等流程难以自定义)。
Authentik 的差异化定位在于流程可编排(Flows):登录、注册、MFA、密码修改等每一个环节都被建模为「阶段(Stage)+ 绑定(Binding)」的组合,管理员可以在管理台拖拽式地重排整个认证旅程,而无需改代码。
💡 技术拓展:开源 IAM/SSO 领域常见选型对比——
方案 实现语言 特点 适用场景 Keycloak Java 老牌、功能最全、Realm 多租户、生态最广 企业级重协议场景 ZITADEL Go API 优先、多租户/组织模型原生、云原生 SaaS 化、B2B 多组织 Authentik Python + Rust + Go Flows 流程编排、Outpost 反向代理、管理台易用 自托管统一认证、护住内网应用 Casdoor Go 轻量、中文社区友好 轻量统一登录 Keycloak 替代:Ory 系 Go 组件化(Kratos/Hydra/Keto) 极客式自组装 本文选型对象为 Authentik:在「流程可编排程度」与「自托管管理台易用性」上优势明显,且单机三服务即可跑起完整能力。
三、核心架构
3.1 三服务形态
Authentik 的标准部署由三个常驻服务构成(数量与官方 2026.8.4 版 compose 文件一致):
| 服务 | 角色 | 说明 |
|---|---|---|
| server | 入口与 API | 对外提供 Web 管理台、认证流程页面、/api/v3 REST API 与各协议端点(如 /application/o/token/) |
| worker | 任务执行 | 执行后台任务:Blueprint 系统策略应用、Outpost 派发、通知、缓存清理、系统任务调度 |
| PostgreSQL 16 | 持久层 | 全部业务数据(用户、应用、流程定义、事件审计)存储于此 |
版本实测确认:2026.x 起官方 compose 已不再包含独立 Redis 服务,缓存与通道数据由进程内缓存与 PostgreSQL 承担;部署前置仅需 2 CPU / 2 GB 内存。
curl -s -H "Authorization: Bearer <API Token>" http://localhost:13904/api/v3/root/config/
实测返回节选(capabilities 字段直接可查实例能力面):
{
"capabilities": [
"can_save_media",
"can_save_reports",
"can_asn",
"can_geo_ip",
"can_impersonate",
"is_enterprise",
"can_agent_self_service"
],
"cache_timeout": 300,
"cache_timeout_flows": 300,
"cache_timeout_policies": 300
}
3.2 Outpost 代理模型
Outpost 是 Authentik 区别于多数 IAM 的独有部件:一个跑在业务应用前面的轻量反向代理进程,替后端应用完成认证(把 OAuth2/OIDC 细节封装掉,业务应用只需被代理)。
Authentik 2026.8.4 实例默认自带一个嵌入式 Outpost(随 server 进程运行,无需额外部署)。实测查询:
curl -s -H "Authorization: Bearer <API Token>" http://localhost:13904/api/v3/outposts/instances/
实测返回节选:
{
"results": [
{
"pk": "058b8df5-1f62-4a36-8a98-69251630c4b4",
"name": "authentik Embedded Outpost",
"type": "proxy",
"providers": [],
"service_connection": null,
"token_identifier": "ak-outpost-058b8df5-1f62-4a36-8a98-69251630c4b4-api"
}
]
}
健康状态实测(GET /api/v3/outposts/instances/<pk>/health/):
[
{
"uid": "e5504b99-9159-4a56-ae1c-b7a3ffdb300e",
"last_seen": "2026-10-17T20:09:30.909343Z",
"version": "2026.8.4",
"version_should": "2026.8.4",
"version_outdated": false,
"hostname": "52fbdfc47034"
}
]
每个 Outpost 在 Authentik 中自动生成一个服务账号用户(internal_service_account 类型),通过 API Token 拉取自身配置。实测用户列表中可见两个(嵌入式 + 后文实验创建的手动 Outpost):
2 ak-outpost-058b8df51f624a368a9869251630c4b4 internal_service_account
7 ak-outpost-e4a7eafd76554bc5b754009d97f5a2f5 internal_service_account
3.3 技术栈构成
从实测日志与 HTTP 响应头确认,2026.8.4 的 server 进程为多语言混合体:Python ASGI 层(响应头 server: uvicorn)、Rust 层(日志模块 packages/ak-axum)、Go 层(嵌入式 Outpost,日志 goauthentik.io/outpost/2026.8.4)。worker 为 Python 进程。对使用者而言这一分层完全透明,仅排障读日志时能感知。
四、功能特性
4.1 Flows(流程编排)
流程是 Authentik 的一等公民。一个 Flow = designation(用途)+ 有序的 Stage 绑定列表。实例初始化后自带 15 条默认流程,实测清单:
curl -s -H "Authorization: Bearer <API Token>" "http://localhost:13904/api/v3/flows/instances/?page_size=100"
实测返回节选(slug 与 designation):
default-authentication-flow authentication
default-invalidation-flow invalidation
default-provider-authorization-explicit-consent authorization
default-provider-authorization-implicit-consent authorization
default-source-enrollment enrollment
default-user-settings-flow stage_configuration
initial-setup stage_configuration
(共 15 条,略)
designation 共四种:authentication(登录)、authorization(应用授权)、invalidation(登出)、enrollment(注册)、stage_configuration(阶段配置类)。每条流程的标题、背景图、拒绝行为(denied_action)均可自定义。
4.2 Providers(应用接入协议)
Provider 是「把一个应用接入 Authentik」的协议适配器,实测本机创建过三种:
| Provider 类型 | 实测对象 | 关键参数(实测值) |
|---|---|---|
| OAuth2/OIDC | demo-api-provider | grant_types=client_credentials、sub_mode=hashed_user_id、access_token_validity=hours=1 |
| SAML | demo-saml-provider | acs_url、sp_binding=post、audience=sp-example |
| Proxy | demo-proxy-provider | external_host=http://demo.internal:8080、mode=proxy |
OAuth2 Provider 端到端实测(client_credentials 模式直接换 JWT):
curl -s -u "<client_id>:<client_secret>" -X POST \
http://localhost:13904/application/o/token/ \
-d "grant_type=client_credentials&scope=openid goauthentik.io/api"
实测返回:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"scope": "",
"expires_in": 3600,
"id_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
解码 access_token 的 payload 可见标准 JWT 声明(实测):
{
"iss": "http://localhost:13904/application/o/demo-api/",
"sub": "b385c5a28e739e4dd3b3b38be9453700fccbe689e5da0fdb7c3b2990bf765d06",
"aud": "<client_id>",
"exp": 1792271115,
"iat": 1792267515,
"acr": "goauthentik.io/providers/oauth2/default",
"uid": "p1PkU5tebTYmaWkmVDnnanXal0BdDkUB1EAlwITD"
}
SAML Provider 创建后,元数据端点立即可用(实测 curl -sL http://localhost:13904/application/saml/demo-saml-app/metadata/ 返回标准 md:EntityDescriptor XML,entityID 为 http://localhost:13904/application/saml/demo-saml-app/metadata/)。
4.3 Stages(阶段)与 Policies(策略)
登录旅程中的每一步(用户名输入、密码校验、TOTP/WebAuthn 二次验证、同意页、邮件验证等)都是一个 Stage;Policies 则是挂在 Flow 绑定、Stage、Application 上的条件表达式,用于动态决定「要不要走这一步」。实例默认内置 31 条托管 Blueprint(GET /api/v3/managed/blueprints/ 实测 count = 31),出厂即带齐常用流程模板。
4.4 Sources(外部身份源)
支持把外部身份系统作为登录来源接入:OAuth2/OIDC 上游、SAML 上游、LDAP 上游、Kerberos(2026.x 新增)、SCIM 等,并支持自动注册(enrollment)流程把外部用户落为本地账号。
4.5 API 与企业能力
管理台全部操作都基于 /api/v3 REST API(OpenAPI 3.0.3 Schema 实测可拉取,含 607 条路径),可完全 API 化运维。企业版能力(实测 capabilities 中 is_enterprise: true 默认激活试用许可)包括:RAC(远程访问控制)、端点连接器、事件策略增强等;开源版覆盖全部核心认证能力。
五、快速开始(最小可用示例)
以「新建一个用户并让它能登录」为例,全部用 API 完成(Token 认证方式见《Authentik 2026.8 API 使用详解》):
curl -s -X POST -H "Authorization: Bearer <API Token>" \
-H "Content-Type: application/json" \
http://localhost:13904/api/v3/core/users/ \
-d '{"username":"qdemo","name":"Q Demo","email":"qdemo@example.com","path":"users","type":"internal"}'
实测返回:
{
"pk": 6,
"username": "qdemo",
"name": "Q Demo",
"email": "qdemo@example.com",
"type": "internal",
"is_active": true,
"uid": "ccff671549b3f48eaa37c28f9982ce6d4123323e429b967ffb777df8bb5cb4a4"
}
把用户加入分组:
curl -s -X POST -H "Authorization: Bearer <API Token>" \
-H "Content-Type: application/json" \
http://localhost:13904/api/v3/core/groups/<group-pk>/add_user/ \
-d '{"pk":6}'
实测返回 HTTP 204。创建分组本身:
curl -s -X POST -H "Authorization: Bearer <API Token>" \
-H "Content-Type: application/json" \
http://localhost:13904/api/v3/core/groups/ \
-d '{"name":"demo-group","is_superuser":false}'
实测返回:{"pk":"5e7af8a9-bf5b-4a21-bee3-cdc84da553ca","name":"demo-group",...}。此后用户在 http://<服务器IP>:13904 即可用该账号走默认登录流程。
六、适用场景与限制
适用:内网多应用统一登录;给无认证能力的老应用套反向代理登录;需要自定义注册/审批流(Flow 编排);B2C 风格的用户自助中心(Authentik 自带用户门户)。
限制(实测/官方口径):
- 官方编排部署方式定位为测试与小规模生产(官方文档原话:test setups and small-scale production setups),大规模高可用建议 Kubernetes 部署;
- 多实例共享 PostgreSQL 才可水平扩展,无内置分片;
- 客户端凭证模式默认不自动获得 API 权限——实测 service account 加入管理员分组后才能调通
/api/v3/core/users/me/,最小权限需自行规划。
七、同类选型对比
| 维度 | Authentik 2026.8 | Keycloak 26.x | ZITADEL |
|---|---|---|---|
| 许可证 | MIT(Schema 实测) | Apache-2.0 | Apache-2.0(企业功能闭源) |
| 技术栈 | Python + Rust + Go | Java (Quarkus) | Go |
| 流程自定义 | Flows/Stage 拖拽编排,程度最高 | Authentication Flow 也可编排,颗粒较粗 | Action/Workflow,偏 API 化 |
| 反向代理接入 | 内建 Proxy Provider + Outpost | 需配 OAuth2 Proxy 等外置组件 | 需外置组件 |
| 多租户 | Brands(品牌级,实测 1 个默认) | Realm 多租户,成熟 | Organization 原生多租户,最强 |
| 部署重量(最小) | 3 服务(server/worker/PG),官方 2C2G | 1 服务 + 外置 PG/H2 | 1 服务 + 外置 PG |
| API 完备度 | /api/v3 全量(607 路径实测) | Admin REST 全量 | gRPC + REST 全量 |
| 版本节奏 | 月度特性版本(2026.x),实测 2026-10-14 发 2026.8.4 | 季度 minor,月度 micro | 月度 |
选型建议:重「登录旅程定制 + 反代保护存量应用」选 Authentik;重「多 Realm 隔离 + 最广生态集成」选 Keycloak;重「SaaS 化 B2B 多组织」选 ZITADEL。
八、参考链接
- 官方网站:https://goauthentik.io
- 官方文档:https://docs.goauthentik.io
- 代码仓库:https://github.com/goauthentik/authentik
- 2026.8 发布说明:https://docs.goauthentik.io/docs/releases/2026.8
- OpenAPI Schema(本机实例):
http://<服务器IP>:13904/api/v3/schema/ - 本系列部署篇:《Authentik Docker Compose 部署指南》