Authentik 介绍与选型指南

Authentik 2026.8.4 开源 SSO/IAM 平台介绍:三服务架构、Outpost 代理、Flows 流程编排、核心功能与 Keycloak/ZITADEL 选型对比,实例实测数据支撑

AuthentikAuthentik2026/10/18

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 团队维护。它把「用户是谁(认证)」和「谁能访问什么(授权)」集中到一个平台,向内部所有应用统一提供登录能力。

它解决的核心痛点:

  1. 应用各自维护账号密码,员工/用户需要记忆多套凭据;
  2. 接入第三方身份协议(OAuth2/OIDC、SAML、LDAP 等)时每家应用都要重复开发;
  3. 缺少统一的登录流程编排能力(多因素认证、注册、密码找回等流程难以自定义)。

Authentik 的差异化定位在于流程可编排(Flows):登录、注册、MFA、密码修改等每一个环节都被建模为「阶段(Stage)+ 绑定(Binding)」的组合,管理员可以在管理台拖拽式地重排整个认证旅程,而无需改代码。

💡 技术拓展:开源 IAM/SSO 领域常见选型对比——

方案实现语言特点适用场景
KeycloakJava老牌、功能最全、Realm 多租户、生态最广企业级重协议场景
ZITADELGoAPI 优先、多租户/组织模型原生、云原生SaaS 化、B2B 多组织
AuthentikPython + Rust + GoFlows 流程编排、Outpost 反向代理、管理台易用自托管统一认证、护住内网应用
CasdoorGo轻量、中文社区友好轻量统一登录
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/OIDCdemo-api-providergrant_types=client_credentials、sub_mode=hashed_user_id、access_token_validity=hours=1
SAMLdemo-saml-provideracs_url、sp_binding=post、audience=sp-example
Proxydemo-proxy-providerexternal_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 自带用户门户)。

限制(实测/官方口径):

  1. 官方编排部署方式定位为测试与小规模生产(官方文档原话:test setups and small-scale production setups),大规模高可用建议 Kubernetes 部署;
  2. 多实例共享 PostgreSQL 才可水平扩展,无内置分片;
  3. 客户端凭证模式默认不自动获得 API 权限——实测 service account 加入管理员分组后才能调通 /api/v3/core/users/me/,最小权限需自行规划。

七、同类选型对比

维度Authentik 2026.8Keycloak 26.xZITADEL
许可证MIT(Schema 实测)Apache-2.0Apache-2.0(企业功能闭源)
技术栈Python + Rust + GoJava (Quarkus)Go
流程自定义Flows/Stage 拖拽编排,程度最高Authentication Flow 也可编排,颗粒较粗Action/Workflow,偏 API 化
反向代理接入内建 Proxy Provider + Outpost需配 OAuth2 Proxy 等外置组件需外置组件
多租户Brands(品牌级,实测 1 个默认)Realm 多租户,成熟Organization 原生多租户,最强
部署重量(最小)3 服务(server/worker/PG),官方 2C2G1 服务 + 外置 PG/H21 服务 + 外置 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。

八、参考链接