1个稳定版本

1.2.0 2024年5月1日

#860身份验证


2 crates 中使用

MPL-2.0 许可证

4MB
84K SLoC

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

关于

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

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

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

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

支持的功能

Kanidm支持

  • 安全加密身份验证的WebAuthn密钥
  • 适用于高安全环境的声明性密钥
  • OAuth2/OIDC身份验证提供者,用于Web SSO
  • 应用程序门户,可轻松访问链接的应用程序
  • Linux/Unix集成,使用TPM安全离线身份验证
  • 将SSH密钥分发到Linux/Unix系统
  • RADIUS用于网络和VPN身份验证
  • 为旧系统提供只读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绑定,并且有许多类似的想法。

Kanidm相对于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等服务,并且与Kanidm相比,它以更简单、更正确的方式提供了许多元素。

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选择基于我们对企业LDAP服务器的经验编写自己的高性能数据库和复制系统相比,这可能会创建一个潜在的单一故障点,并限制性能。

开发者入门

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

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


lib.rs:

Kanidmd服务器库。这实现了服务器内部的所有组件,用于处理身份验证、存储身份和执行访问控制。

依赖关系

~68MB
~1M SLoC