22个版本 (6个稳定版)

新版本 1.3.2 2024年8月10日
1.2.2 2024年5月30日
1.1.0-rc.15-dev2023年10月31日
1.1.0-rc.162024年2月7日
0.1.0 2019年12月17日

#337认证

Download history 14/week @ 2024-04-22 246/week @ 2024-04-29 13/week @ 2024-05-06 23/week @ 2024-05-13 186/week @ 2024-05-20 207/week @ 2024-05-27 42/week @ 2024-06-03 30/week @ 2024-06-10 9/week @ 2024-06-17 29/week @ 2024-06-24 6/week @ 2024-07-01 12/week @ 2024-07-08 6/week @ 2024-07-15 7/week @ 2024-07-29 368/week @ 2024-08-05

每月383次下载
3 crates 中使用

MPL-2.0 许可证

235KB
5.5K SLoC

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

关于

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

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

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

如果您想托管自己的认证服务,那么Kanidm适合您!

支持的功能

Kanidm支持

  • WebAuthn的安全密码学认证的Passkeys
  • 适用于高安全环境的安全认证的Passkeys
  • OAuth2/OIDC认证提供者,用于Web SSO
  • 应用程序门户,允许轻松访问链接的应用程序
  • 与TPM安全离线认证集成的Linux/Unix集成
  • 将SSH密钥分发到Linux/Unix系统
  • RADIUS用于网络和VPN认证
  • 针对Legacy系统的只读LDAPs网关
  • 完整的CLI工具用于管理
  • 使用数据库复制实现的双节点高可用性
  • 用户自助服务的WebUI

文档 / 入门 / 安装

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

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

行为准则 / 道德

本项目所有交互均受我们行为准则的约束。

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

联系方式 / 问题

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

Kanidm 是什么意思?

Kanidm 是“kani”和“idm”的组合。Kani 是日语中螃蟹的意思,与 Rust 的吉祥物 Ferris 螃蟹相关。身份管理常被缩写为“idm”,是认证提供商的常用行业术语。

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

与其他服务的比较

LLDAP

LLDAP 是一个类似的项目,旨在提供一个小型且易于管理的 LDAP 服务器,带有网络管理界面。这两个项目都使用 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 可能适合您。在测试中,Kanidm 在搜索操作的速度比 FreeIPA 快 3 倍,在修改和添加条目方面的速度比 FreeIPA 快 5 倍(您的结果可能会有所不同,但通常 Kanidm 比 FreeIPA 快得多)。

Keycloak

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

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

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

Rauthy

Rauthy 是一个最小的 OIDC 提供商。它支持与 Kanidm 一样的 WebAuthn - 它们实际上使用我们的库来实现这一点!

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是一个多样化的主题,我们鼓励来自各种背景的人为项目做出多种贡献。

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

依赖项

~17–32MB
~547K SLoC