多数自建身份系统是在多年运维中逐步拼接起来的,最初的设计往往难以预见今天的样貌。一个系统保存人员与群组,另一个系统负责 OAuth,Linux 主机从 LDAP 目录取数,强认证则留待后续单独集成。Kanidm 尝试统一管理账户、认证与授权,并根据需要有选择地兼容旧协议。[1]
要理解这个项目,得先看它选择了哪些功能。“开源 Active Directory 替代品”或“OIDC 服务”都只能概括其中一部分。文档描述的职责更集中:统一管理账户数据与现代认证凭证,支持 OAuth2/OpenID Connect(OIDC),并集成 Unix 客户端。旧式 LDAP 则留给仍依赖它的应用,作为兼容服务按需启用。[1][2][3][4][5][6]
截至 2026-04-06T03:06:04Z UTC,GitHub API 显示 kanidm/kanidm 仓库有 4,758 个星标、311 个分叉、248 个未关闭议题,最近一次推送时间为 2026-04-05T22:21:06Z。[8] 最近发布的版本包括 2026-03-13 的 v1.9.2、2026-02-24 的 v1.9.1,以及 2026-02-17 的 v1.9.0。[9] 支持文档规定,稳定版按季度发布,每个版本支持 4 个月,相邻稳定版本的支持期有短暂重叠。[7] 身份系统需要长期运行,明确的升级安排与支持期限有助于运维团队规划维护工作。
题图中的 YubiKey 插在笔记本电脑上。相较于锁头图标或身份与访问管理(IAM)控制台截图,这张实物照片更贴近 Kanidm 的特点:现代认证器如何与账户绑定,系统又如何信任这些设备,都是它的核心设计问题。[2][10]
从分散的账户与凭证入手
Kanidm 的导言文档明确了项目目标:为授权与认证提供单一可信源,简化系统、网络、应用与 Web 的认证管理。[1] 许多身份软件都有类似目标,Kanidm 则从日常运维中的具体问题谈起:账户与密钥分散在各处,各系统授予的权限不一致,共享密码和权限过大的凭证越积越多。[1]
这些问题也划定了项目的职责。与功能包罗万象的企业套件相比,Kanidm 专注于身份管理:加强凭证安全、统一账户数据,减少不同系统中的身份记录日渐失准、彼此脱节的问题。[1][6]
这也说明了 Kanidm 适合哪些团队:同一批用户既通过 OIDC 登录 Web 应用,也登录 Linux 主机,同时需要比单独使用密码更强的认证方式。[1][3][4]
默认采用现代认证
认证文档明确写道,通行密钥(passkey)是首选认证方式。文档将其描述为抗钓鱼认证器,自身即可完成多因素认证。[2] 许多身份产品虽支持抗钓鱼认证,默认配置仍以密码为基础,并为兼容旧系统保留例外。Kanidm 则优先采用 passkey,再处理兼容需求。[2]
OAuth2/OpenID Connect 文档列出了具体要求:接入服务须支持 PKCE S256,使用 OIDC 时则预期采用 ES256 签名。需要旧版行为的客户端,另按文档中的“legacy clients”规定接入。[3] Kanidm 还会签发符合 RFC 9068 JWT 标准的访问凭证(access token),支持凭证自省(token introspection)与 OIDC 发现(OIDC discovery)。这些功能遵循现代认证协议,项目整体设计也以此为基础。[3][6]
这些文档指向同一项取舍:Kanidm 优先服务于愿意采用 passkey、现代 OIDC 和更严格凭证规则的环境,对旧系统的兼容则有所选择。[2][3][6]
Linux 客户端纳入产品设计
Kanidm 的职责延伸到了 Linux 主机。它通过 PAM 与 nsswitch 集成,并配有专门的 Unix 守护进程:缓存用户与群组、安全保存凭证缓存、自动创建用户主目录,也可选用可信平台模块(TPM)完成密码学绑定。守护进程还能缓存 /etc/passwd 与 /etc/group 的内容,以改善性能。[5] 从认证到本机账户数据,这些功能覆盖了较完整的客户端需求。
Kanidm 把 Linux 登录的整个过程纳入自身设计,职责也超出了查询目录。[5] 因此,部署这套身份系统时,客户端与服务端都属于产品的一部分,需要一并考虑。
客户端工具也面向多种操作系统。安装页列出的打包或测试平台包括 OpenSUSE、SLE、Debian、Fedora、Ubuntu、Arch、Alpine、NixOS、FreeBSD 与 macOS。Windows 客户端已可编译,但尚未常规打包。[12] 这些覆盖范围说明,项目从设计之初就考虑了多种操作系统共存的环境。具体企业是否适用,仍要核对自身需求。
LDAP 兼容有明确限制
LDAP 文档直接说明了兼容范围。Kanidm 为旧应用开放 只读 LDAP 接口,并有意只支持部分 LDAP 功能。[4] 原因在于数据模型不同:Kanidm 保存带标签的 SSH 密钥、多值凭证等结构化数据,难以完整映射到 LDAP 更简单、以字符串键值为主的模型中。[4]
选型时需要核对这些限制。广泛依赖 LDAP 写入操作、要求完整兼容目录模式(schema),或需要沿用传统 AD / FreeIPA 目录行为的团队,会遇到功能缺口。对于优先采用现代认证、只需照顾少数旧应用的团队,范围有限的兼容服务则更贴合需求。[3][4][6]
访问控制也遵循同样的取向。Kanidm 将服务管理权限与人员、群组管理权限分开,并支持特权访问模式(privilege access mode)。高权限操作须重新认证,权限也只在短时间内有效。[13] 限制高权限凭证出错或失窃后的影响范围,因而成为日常管理的基本要求。
2026 年的维护状况
判断系统是否适合投入使用,还要在星标数和发布记录之外查看维护安排。Kanidm 的支持文档列出了发布节奏、版本命名规则,以及相邻稳定版本支持期的重叠时间。[7] GitHub 发布记录显示,项目在 1.9.0 稳定版之后继续推出 1.9.1 与 1.9.2 补丁版本。[9] 这样的节奏兼顾了问题修复与维护安排,运维团队也有据可依。
项目外部的运维者也有相近观察。RCS Networks 的文章将 Kanidm 描述为现代、相对轻量的身份管理系统,内建 passkey、OIDC/OAuth2、Unix 集成与双节点复制,可从家庭实验环境用起,再扩展到更大的部署。[11] 单篇使用概览尚不足以证明它适合广泛采用,但外部运维者所描述的功能重点,与官方文档大体一致。
哪些团队更适合采用
以下三个条件可以帮助团队判断 Kanidm 是否适合自身环境:
- 用户主要登录 Linux 系统和 Web 应用,对 Windows 域的依赖较少。[1][3][4][5]
- 团队希望 passkey、OIDC 与 Unix 登录共享同一个账户模型,统一管理各处的账户。[1][2][3][4]
- LDAP 仅用于兼容旧软件,整套身份系统可按现代认证的要求设计。[4][6]
这三个条件限定了 Kanidm 的适用范围。仍然重度依赖旧目录行为的团队,需要认真评估兼容缺口。希望简化账户管理、优先采用现代认证并深入集成 Linux 登录的团队,则能从它集中的功能设计中受益。
来源
- Kanidm Administration,《Introduction to Kanidm》:项目目标、单一可信源,以及凭证分散管理带来的问题。
- Kanidm Administration,《Authentication and Credentials》:首选的 passkey 模型、attested passkey,以及抗钓鱼认证。
- Kanidm Administration,《OAuth2》:PKCE S256、ES256 的 OIDC 要求、旧客户端兼容限制,以及 RFC 9068 凭证细节。
- Kanidm Administration,《LDAP》:只读 LDAP 兼容服务、有意限定的支持范围,以及 Kanidm 数据与 LDAP 对象之间的映射限制。
- Kanidm Administration,《PAM and nsswitch》:原生 Unix daemon 特性、凭证缓存、TPM 相关选项,以及 Linux 客户端集成细节。
- Kanidm Administration,《Supported Features》:支持的 OAuth2/OIDC、WebAuthn、LDAP 只读模式、复制、Unix client 与访问控制相关标准。
- Kanidm Administration,《Kanidm - Support and Release Processes》:季度发布节奏、semver 规则与 4 个月稳定版支持窗口。
- GitHub API 中
kanidm/kanidm的仓库快照:stars、forks、open issues 与最近一次 push 时间。 - GitHub API 中
kanidm/kanidm的发布列表:最近几个 release tag 与发布时间。 - 本文配图所用的 YubiKey 照片之 Wikimedia Commons 文件页。
- RCS Networks,《kanidm》:项目外部的运维者概览,介绍 passkey、OIDC/OAuth2、Unix 集成与相对轻量的部署。
- Kanidm Administration,《Installing Client Tools》:主流 Linux 发行版、FreeBSD、macOS 的客户端覆盖,以及 Windows 构建状态。
- Kanidm Administration,《Access Control》:服务管理权限与人员管理权限的分离,以及 privilege access mode。