1 个稳定版本
1.2.0 | 2024年5月1日 |
---|
#11 in #webauthn
4MB
87K 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绑定,并有许多类似的想法。
与LLDAP相比,Kanidm的主要优势是它提供了一组更广泛的“内置”功能,如OAuth2和OIDC。要从LLDAP使用这些,你需要一个外部门户,如Keycloak。然而,这也是LLDAP的优势,它提供了“更少”的东西,这可能使管理部署更容易。
虽然LLDAP提供简单的WebUI作为主要用户管理前端,但Kanidm目前仅通过其CLI提供管理功能。Kanidm的WebUI针对用户交互进行了定制。
如果Kanidm对于您的需求来说过于复杂,您应该考虑LLDAP作为较小的替代方案。如果您希望有一个具有更广泛功能的即用型项目,那么Kanidm将是一个更好的选择。
389-ds / OpenLDAP
389-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选择基于我们对企业LDAP服务器的经验编写自己的高性能数据库和复制系统相比,这可能会创建一个潜在的单一故障点和性能限制。
开发者入门
如果您想为Kanidm做出贡献,这里有针对开发者的入门指南。IDM是一个多元化的主题,我们鼓励来自不同背景的人为项目做出多种贡献。
在开发服务器时,应参考最新的提交文档。
依赖关系
~80MB
~1.5M SLoC