9个版本 (稳定版)

1.3.2 2024年8月10日
1.3.1 2024年8月8日
1.2.2 2024年5月30日
1.1.0-rc.15-dev2023年10月31日
1.1.0-beta.132023年8月1日

身份验证 中排名第 525

Download history 187/week @ 2024-04-28 11/week @ 2024-05-05 12/week @ 2024-05-12 163/week @ 2024-05-19 195/week @ 2024-05-26 29/week @ 2024-06-02 20/week @ 2024-06-09 16/week @ 2024-06-16 7/week @ 2024-06-23 1/week @ 2024-06-30 1/week @ 2024-07-07 5/week @ 2024-07-14 4/week @ 2024-07-21 6/week @ 2024-07-28 345/week @ 2024-08-04

每月下载量 360
4 库中使用 (2直接使用)

MPL-2.0 许可证

10KB
158

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

关于

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

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

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

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

支持的功能

Kanidm支持

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

文档 / 入门 / 安装

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

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

行为准则 / 道德

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

在开发功能时,我们遵循项目关于权利和道德规范的指南。

联系/提问

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

Kanidm是什么意思?

Kanidm是由“kani”和“idm”组合而成的。kani在日语中是螃蟹的意思,与 Rust 的吉祥物螃蟹费里斯有关。身份管理常简称为“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可能是您所需要的。在测试中,与3000个用户+1500个组相比,Kanidm的搜索操作速度提高了3倍,修改和添加条目的速度提高了5倍(但您的结果可能会有所不同,但一般来说,Kanidm比FreeIPA快得多)。

Keycloak

Keycloak是一个OIDC/OAuth2/SAML提供者。它允许您在现有的IDM系统中叠加WebAuthn。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 是一个多样化的主题,我们鼓励来自所有背景的人们对该项目的各种贡献。

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

依赖项

~0.7–3.5MB
~60K SLoC