3 个版本 (不稳定)
1.1.0-alpha | 2020年6月30日 |
---|---|
0.1.1 | 2020年2月15日 |
0.1.0 | 2019年12月17日 |
#7 in #identity-provider
1.5MB
34K SLoC
Kanidm - 简单且安全的身份管理
关于
Kanidm 是一个简单且安全的身份管理平台,允许其他应用程序和服务将验证和存储身份的挑战卸载到 Kanidm。
本项目的目标是成为一个完整的身份提供者,覆盖尽可能广泛的要求和集成。您在使用 Kanidm 时不应需要任何其他组件(如 Keycloak)——我们已经拥有了您所需的一切!
为了实现这一点,我们高度依赖严格的默认设置、简单的配置和自愈组件。这使得 Kanidm 可以从小型家庭实验室、家庭、小型企业运行到最大的企业需求。
如果您想托管自己的身份验证服务,那么 Kanidm 就适合您!
支持的功能
Kanidm 支持
- WebAuthn 密钥(WebAuthn)进行安全的加密身份验证
- 适用于高安全环境的声明性密钥
- OAuth2/OIDC 身份验证提供程序,用于网络 SSO
- 应用程序门户,允许轻松访问链接的应用程序
- Linux/Unix 集成,使用 TPM 加密的离线身份验证
- 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服务器,并带有Web管理门户。这两个项目都使用了Kanidm LDAP绑定,并且有许多相似的想法。
Kanidm相较于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是一个多元化的主题,我们鼓励来自所有背景的人为项目做出多种贡献。
在开发服务器时,您应参考最新的提交文档。
依赖项
~72MB
~1.5M SLoC