21个版本 (5个稳定版)

1.3.1 2024年8月8日
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日

#334 in 身份验证

Download history • Rust 包仓库 89/week @ 2024-04-14 • Rust 包仓库 28/week @ 2024-04-21 • Rust 包仓库 258/week @ 2024-04-28 • Rust 包仓库 26/week @ 2024-05-05 • Rust 包仓库 31/week @ 2024-05-12 • Rust 包仓库 197/week @ 2024-05-19 • Rust 包仓库 222/week @ 2024-05-26 • Rust 包仓库 59/week @ 2024-06-02 • Rust 包仓库 34/week @ 2024-06-09 • Rust 包仓库 27/week @ 2024-06-16 • Rust 包仓库 36/week @ 2024-06-23 • Rust 包仓库 8/week @ 2024-06-30 • Rust 包仓库 15/week @ 2024-07-07 • Rust 包仓库 21/week @ 2024-07-14 • Rust 包仓库 7/week @ 2024-07-21 • Rust 包仓库 16/week @ 2024-07-28 • Rust 包仓库

59 每月下载量
用于 7 crates

MPL-2.0 许可证

145KB
3.5K SLoC

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的吉祥物Ferris螃蟹有关。身份管理通常缩写为“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等服务,并且与Kanidm相比,它以更简单、更正确的方式集成了许多元素。

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

开发者入门

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

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


lib.rs:

Kanidm JSON协议定义

此库定义了Kanidm的http API所使用的元素。每个模块都有不同的支持级别,这些级别定义了项目对模块变更的政策。

依赖项

~6–8.5MB
~187K SLoC