1 个稳定版本

1.2.0 2024年5月1日

#2#管理

MPL-2.0 许可证

4MB
87K SLoC

Kanidm - 简单且安全的身份管理

关于

Kanidm 是一个简单且安全的身份管理平台,允许其他应用程序和服务将身份验证和存储身份的挑战卸载到 Kanidm。

本项目目标是成为一个完整的身份提供者,覆盖尽可能广泛的必要性和集成。当您使用 Kanidm 时,您不应需要任何其他组件(如 Keycloak)——我们已拥有一切所需!

为了实现这一点,我们高度依赖严格的默认设置、简单的配置和自愈组件。这使得 Kanidm 可以从小型家庭实验室、家庭、小型企业一直运行到最大的企业需求。

如果您想托管自己的身份验证服务,那么 Kanidm 就是为您准备的!

支持功能

Kanidm 支持

  • WebAuthn 密钥用于安全的加密身份验证
  • 针对高安全环境的事务性密钥
  • OAuth2/OIDC 身份验证提供者用于Web单点登录
  • 应用程序门户,可轻松访问链接的应用程序
  • 与TPM安全离线身份验证集成的Linux/Unix集成
  • 将SSH密钥分发到Linux/Unix系统
  • RADIUS 用于网络和VPN身份验证
  • 为旧系统提供只读LDAPs网关
  • 完整的命令行工具用于管理
  • 使用数据库复制实现的双节点高可用性
  • 用户自助服务的WebUI

文档 / 入门 / 安装

如果您想了解更多关于 Kanidm 能做什么的信息,您应该阅读我们的文档。

我们还有一套支持指南,说明项目团队将支持哪些内容。

行为准则 / 道德规范

所有与项目相关的互动均受我们行为准则的约束。

在开发功能时,我们遵循项目在权利和道德方面的指南。

联系方式 / 问答

我们有一个由Matrix驱动的Gitter社区频道,项目成员总是乐于聊天并解答问题。或者,你也可以打开一个新的GitHub讨论

“Kanidm”是什么意思?

Kanidm是“kani”和“idm”的合成词。“kani”是日语中螃蟹的意思,与Rust吉祥物Ferris the crab有关。身份管理通常缩写为“idm”,是认证提供商的常见行业术语。

Kanidm的发音为“kar - nee - dee - em”。

与其他服务的比较

LLDAP

LLDAP是一个类似的项目,旨在实现一个小型且易于管理的LDAP服务器,具有Web管理门户。这两个项目都使用了Kanidm LDAP绑定,并且有很多相似的想法。

与LLDAP相比,Kanidm的主要优势是它提供了一套更广泛的“内置”功能,如OAuth2和OIDC。要从LLDAP使用这些功能,你需要一个外部门户,如Keycloak。然而,这也是LLDAP的一个优点,它提供的“功能更少”,这可能使管理和服务更容易。

虽然LLDAP提供了一个简单的WebUI作为主要用户管理前端,但Kanidm目前仅通过其CLI提供管理功能。Kanidm的WebUI专为用户交互而定制。

如果Kanidm对你来说太复杂,你应该检查LLDAP作为较小的替代方案。如果你需要一个功能更全面的现成项目,那么Kanidm将是一个更好的选择。

389-ds / OpenLDAP389-ds和OpenLDAP都是通用的LDAP服务器。这意味着它们只提供LDAP,你需要自己提供IDM组件——你需要自己的OIDC门户、自助服务WebUI、用于管理和更多功能的命令行工具。

如果你需要从LDAP部署中获得可能的最大程度定制,那么这些可能是更好的替代方案。如果你需要一个易于设置且专注于IDM的服务,那么Kanidm是一个更好的选择。

Kanidm最初受到了389-ds和OpenLDAP的许多元素的启发。Kanidm已经与389-ds一样快(甚至更快),作为目录服务的性能和可扩展性,同时具有更丰富的功能集。

FreeIPA

FreeIPA是另一个Linux/Unix的标识管理服务,包含来自LDAP、Kerberos、DNS、证书授权等方面的众多功能。

然而,FreeIPA是一个复杂的系统,包含大量组件和配置。这增加了大量资源开销和管理及升级的难度。

Kanidm旨在具有FreeIPA的功能丰富性,但没有资源和管理开销。如果你需要一个完整的IDM包,但需要轻量级和易于管理,那么Kanidm可能适合你。在测试中,与3000个用户+1500个组相比,Kanidm的搜索操作速度快3倍,修改和添加条目的速度提高5倍(然而,你的结果可能不同,但通常Kanidm比FreeIPA快得多)。

Keycloak

Keycloak是一个OIDC/OAuth2/SAML提供商。它允许你将WebAuthn层叠到现有的IDM系统中。Keycloak可以作为独立IDM运行,但通常作为现有LDAP服务器或类似系统的组件。

Keycloak需要大量的配置和经验来部署。它允许对认证工作流每个细节的高度定制,这在许多情况下使开始使用变得更加困难。

Kanidm不需要Keycloak即可提供OAuth2等服务,并且与Keycloak相比,它以更简单和正确的方式集成了许多元素。

Rauthy

Rauthy是一个最小的OIDC提供商。它支持WebAuthn,就像Kanidm一样——它们实际上使用了我们的库!

Rauthy只提供OIDC的支持,因此无法支持其他用例,如RADIUS和Unix认证。

如果您需要一个仅限OIDC的最小化提供者,Rauthy是一个绝佳的选择。如果您需要更多功能,Kanidm将支持这些功能。

Authentik / Authelia / Zitadel

Authentik是一个用Python编写的IDM提供者,Authelia和Zitadel是用Go编写的。它们在提供的功能上与Kanidm相似,但明显在Unix身份验证的支持方面较弱,并且不支持与Kanidm相同级别的身份验证策略。值得注意的是,它们都缺少WebAuthn Attestation。

所有三个都使用外部SQL服务器,如PostgreSQL。这可能会与Kanidm相比,Kanidm选择基于我们对企业LDAP服务器的经验,编写我们自己的高性能数据库和复制系统,从而创建潜在的单一故障点和性能限制。

开发者入门

如果您想为Kanidm做出贡献,请参阅开发者的入门指南。IDM是一个多样化的主题,我们鼓励来自所有背景的人为项目做出多种贡献。

在开发服务器时,您应参考最新提交的文档。

依赖项

~80MB
~1.5M SLoC