2022-10-26 00:18:25 +02:00
|
|
|
# Kanidm - Simple and Secure Identity Management
|
2019-07-28 13:25:51 +02:00
|
|
|
|
|
|
|
<p align="center">
|
2021-12-31 00:26:31 +01:00
|
|
|
<img src="https://raw.githubusercontent.com/kanidm/kanidm/master/artwork/logo-small.png" width="20%" height="auto" />
|
2019-07-28 13:25:51 +02:00
|
|
|
</p>
|
|
|
|
|
2022-10-26 00:18:25 +02:00
|
|
|
## About
|
2018-09-29 09:54:16 +02:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
Kanidm is a simple and secure identity management platform, allowing other applications and services
|
|
|
|
to offload the challenge of authenticating and storing identities to Kanidm.
|
2018-09-29 09:54:16 +02:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
The goal of this project is to be a complete identity provider, covering the broadest possible set
|
|
|
|
of requirements and integrations. You should not need any other components (like Keycloak) when you
|
|
|
|
use Kanidm - we already have everything you need!
|
2019-07-28 14:25:12 +02:00
|
|
|
|
2022-12-26 23:52:03 +01:00
|
|
|
To achieve this we rely heavily on strict defaults, simple configuration, and self-healing
|
2024-03-12 04:38:43 +01:00
|
|
|
components. This allows Kanidm to run from small home labs, families, small businesses, and all the
|
2024-02-07 05:39:02 +01:00
|
|
|
way to the largest enterprise needs.
|
2022-10-26 00:18:25 +02:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
If you want to host your own authentication service, then Kanidm is for you!
|
|
|
|
|
2024-05-01 07:06:59 +02:00
|
|
|
<details>
|
|
|
|
<summary>Supported Features</summary>
|
2022-10-26 00:18:25 +02:00
|
|
|
|
|
|
|
Kanidm supports:
|
|
|
|
|
2024-03-12 04:38:43 +01:00
|
|
|
- Passkeys (WebAuthn) for secure cryptographic authentication
|
|
|
|
- Attested passkeys for high security environments
|
|
|
|
- OAuth2/OIDC authentication provider for web SSO
|
2024-02-07 05:39:02 +01:00
|
|
|
- Application Portal allowing easy access to linked applications
|
|
|
|
- Linux/Unix integration with TPM secured offline authentication
|
2022-12-26 23:52:03 +01:00
|
|
|
- SSH key distribution to Linux/Unix systems
|
2023-05-31 09:52:33 +02:00
|
|
|
- RADIUS for network and VPN authentication
|
2024-03-12 04:38:43 +01:00
|
|
|
- Read-only LDAPs gateway for Legacy Systems
|
2023-05-31 09:52:33 +02:00
|
|
|
- Complete CLI tooling for Administration
|
2024-02-07 05:39:02 +01:00
|
|
|
- Two node high availability using database replication
|
2024-04-26 08:56:47 +02:00
|
|
|
- A WebUI for user self-service
|
2022-10-26 00:18:25 +02:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
</details>
|
2018-09-29 09:54:16 +02:00
|
|
|
|
2021-03-25 01:34:29 +01:00
|
|
|
## Documentation / Getting Started / Install
|
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
If you want to read more about what Kanidm can do, you should read our documentation.
|
2021-03-25 01:34:29 +01:00
|
|
|
|
2024-03-12 04:38:43 +01:00
|
|
|
- [Kanidm book (latest stable)](https://kanidm.github.io/kanidm/stable/)
|
2021-03-25 01:34:29 +01:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
We also have a set of
|
2024-03-08 04:25:45 +01:00
|
|
|
[support guidelines](https://github.com/kanidm/kanidm/blob/master/book/src/support.md) for what the
|
2024-03-12 04:38:43 +01:00
|
|
|
project team will support.
|
2021-03-25 01:34:29 +01:00
|
|
|
|
2020-08-24 04:15:21 +02:00
|
|
|
## Code of Conduct / Ethics
|
2018-09-29 09:54:16 +02:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
All interactions with the project are covered by our [code of conduct].
|
2019-07-28 14:25:12 +02:00
|
|
|
|
2024-03-12 04:38:43 +01:00
|
|
|
When we develop features, we follow our project's guidelines on [rights and ethics].
|
2019-09-14 10:51:56 +02:00
|
|
|
|
2020-08-24 04:15:21 +02:00
|
|
|
[code of conduct]: https://github.com/kanidm/kanidm/blob/master/CODE_OF_CONDUCT.md
|
2024-03-22 00:29:40 +01:00
|
|
|
[rights and ethics]: https://github.com/kanidm/kanidm/blob/master/book/src/developers/developer_ethics.md
|
2019-07-28 14:25:12 +02:00
|
|
|
|
2020-08-24 04:15:21 +02:00
|
|
|
## Getting in Contact / Questions
|
2020-04-25 05:18:19 +02:00
|
|
|
|
2024-02-06 03:05:52 +01:00
|
|
|
We have a Matrix-powered [gitter community channel] where project members are always happy to chat
|
2024-03-12 04:38:43 +01:00
|
|
|
and answer questions. Alternately you can open a new [GitHub discussion].
|
2020-04-25 05:18:19 +02:00
|
|
|
|
2024-01-31 07:50:08 +01:00
|
|
|
[gitter community channel]: https://app.gitter.im/#/room/#kanidm_community:gitter.im
|
2023-05-31 09:52:33 +02:00
|
|
|
[github discussion]: https://github.com/kanidm/kanidm/discussions
|
2020-04-25 05:18:19 +02:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
## What does Kanidm mean?
|
2021-03-25 01:34:29 +01:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
Kanidm is a portmanteau of 'kani' and 'idm'. Kani is Japanese for crab, related to Rust's mascot
|
2024-03-12 04:38:43 +01:00
|
|
|
Ferris the crab. Identity management is often abbreviated to 'idm', and is a common industry term
|
2024-02-07 05:39:02 +01:00
|
|
|
for authentication providers.
|
2021-03-25 01:34:29 +01:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
Kanidm is pronounced as "kar - nee - dee - em".
|
|
|
|
|
|
|
|
## Comparison with other services
|
|
|
|
|
2024-05-01 07:06:59 +02:00
|
|
|
<details>
|
|
|
|
<summary>LLDAP</summary>
|
2024-05-14 06:56:55 +02:00
|
|
|
|
2022-12-26 23:52:03 +01:00
|
|
|
[LLDAP](https://github.com/nitnelave/lldap) is a similar project aiming for a small and easy to
|
|
|
|
administer LDAP server with a web administration portal. Both projects use the
|
|
|
|
[Kanidm LDAP bindings](https://github.com/kanidm/ldap3), and have many similar ideas.
|
2021-03-25 01:34:29 +01:00
|
|
|
|
2024-03-12 04:38:43 +01:00
|
|
|
The primary benefit of Kanidm over LLDAP is that Kanidm offers a broader set of "built-in" features
|
|
|
|
like OAuth2 and OIDC. To use these from LLDAP you need an external portal like Keycloak. However,
|
2024-02-07 05:39:02 +01:00
|
|
|
that is also a strength of LLDAP is that is offers "less" which may make it easier to administer and
|
|
|
|
deploy for you.
|
2019-07-28 14:25:12 +02:00
|
|
|
|
2024-03-12 04:38:43 +01:00
|
|
|
While LLDAP offers a simple WebUI as the primary user management frontend, Kanidm currently only
|
|
|
|
offers administration functionality via its CLI. The Kanidm WebUI is tailored to user interactions.
|
2024-01-19 02:51:01 +01:00
|
|
|
|
2022-10-26 00:18:25 +02:00
|
|
|
If Kanidm is too complex for your needs, you should check out LLDAP as a smaller alternative. If you
|
2024-02-07 05:39:02 +01:00
|
|
|
want a project which has a broader feature set out of the box, then Kanidm will be a better fit.
|
2021-02-18 00:28:36 +01:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
</details>
|
2021-02-18 00:28:36 +01:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
<details><summary>389-ds / OpenLDAP</summary>
|
2022-12-26 23:52:03 +01:00
|
|
|
Both 389-ds and OpenLDAP are generic LDAP servers. This means they only provide LDAP and you need to
|
2024-03-12 04:38:43 +01:00
|
|
|
bring your own IDM components - you need your own OIDC portal, a WebUI for self-service, commandline
|
2023-05-31 09:52:33 +02:00
|
|
|
tools to administer and more.
|
2021-02-18 00:28:36 +01:00
|
|
|
|
2022-10-26 00:18:25 +02:00
|
|
|
If you need the highest levels of customisation possible from your LDAP deployment, then these are
|
2024-03-12 04:38:43 +01:00
|
|
|
probably better alternatives. If you want a service that is easy to set up and focused on IDM, then
|
2022-10-26 00:18:25 +02:00
|
|
|
Kanidm is a better choice.
|
2021-02-18 00:28:36 +01:00
|
|
|
|
2022-12-26 23:52:03 +01:00
|
|
|
Kanidm was originally inspired by many elements of both 389-ds and OpenLDAP. Already Kanidm is as
|
2024-02-07 05:39:02 +01:00
|
|
|
fast as (or faster than) 389-ds for performance and scaling as a directory service while having a
|
|
|
|
richer feature set.
|
2021-02-18 00:28:36 +01:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
</details>
|
2021-02-18 00:28:36 +01:00
|
|
|
|
2024-05-01 07:06:59 +02:00
|
|
|
<details>
|
|
|
|
<summary>FreeIPA</summary>
|
|
|
|
|
2022-10-26 00:18:25 +02:00
|
|
|
FreeIPA is another identity management service for Linux/Unix, and ships a huge number of features
|
|
|
|
from LDAP, Kerberos, DNS, Certificate Authority, and more.
|
2021-02-18 00:28:36 +01:00
|
|
|
|
2022-10-26 00:18:25 +02:00
|
|
|
FreeIPA however is a complex system, with a huge amount of parts and configuration. This adds a lot
|
2024-02-07 05:39:02 +01:00
|
|
|
of resource overhead and difficulty for administration and upgrades.
|
2018-09-29 09:54:16 +02:00
|
|
|
|
2022-10-26 00:18:25 +02:00
|
|
|
Kanidm aims to have the features richness of FreeIPA, but without the resource and administration
|
|
|
|
overheads. If you want a complete IDM package, but in a lighter footprint and easier to manage, then
|
2023-01-24 00:38:19 +01:00
|
|
|
Kanidm is probably for you. In testing with 3000 users + 1500 groups, Kanidm is 3 times faster for
|
|
|
|
search operations and 5 times faster for modification and addition of entries (your results may
|
2023-01-23 11:04:03 +01:00
|
|
|
differ however, but generally Kanidm is much faster than FreeIPA).
|
2020-08-24 04:15:21 +02:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
</details>
|
|
|
|
|
2024-05-01 07:06:59 +02:00
|
|
|
<details>
|
|
|
|
<summary>Keycloak</summary>
|
|
|
|
|
2024-05-14 06:56:55 +02:00
|
|
|
Keycloak is an OIDC/OAuth2/SAML provider. It allows you to layer on WebAuthn to existing IDM
|
|
|
|
systems. Keycloak can operate as a stand-alone IDM but generally is a component attached to an
|
|
|
|
existing LDAP server or similar.
|
2023-05-31 09:52:33 +02:00
|
|
|
|
|
|
|
Keycloak requires a significant amount of configuration and experience to deploy. It allows high
|
2024-03-12 04:38:43 +01:00
|
|
|
levels of customisation to every detail of its authentication work flows, which makes it harder to
|
2023-05-31 09:52:33 +02:00
|
|
|
start with in many cases.
|
|
|
|
|
2024-03-12 04:38:43 +01:00
|
|
|
Kanidm does NOT require Keycloak to provide services such as OAuth2 and integrates many of the
|
2023-05-31 09:52:33 +02:00
|
|
|
elements in a simpler and correct way out of the box in comparison.
|
|
|
|
|
2023-07-17 01:24:01 +02:00
|
|
|
</details>
|
2023-05-31 09:52:33 +02:00
|
|
|
|
2024-05-14 10:52:28 +02:00
|
|
|
<details>
|
|
|
|
<summary>Rauthy</summary>
|
|
|
|
|
|
|
|
Rauthy is a minimal OIDC provider. It supports WebAuthn just like Kanidm - they actually use our library
|
|
|
|
for it!
|
|
|
|
|
|
|
|
Rauthy only provides support for OIDC and so is unable to support other use cases like RADIUS and
|
|
|
|
unix authentication.
|
|
|
|
|
|
|
|
If you need a minimal OIDC only provider, Rauthy is an excellent choice. If you need more features
|
|
|
|
then Kanidm will support those.
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>Authentik / Authelia / Zitadel</summary>
|
|
|
|
|
|
|
|
Authentik is an IDM provider written in Python and, Authelia and Zitadel are written in Go.
|
|
|
|
all similar to Kanidm in the features it offers but notably all have weaker support for
|
|
|
|
unix authentication and do not support the same level of authentication policy as Kanidm. Notably,
|
|
|
|
all are missing WebAuthn Attestation.
|
|
|
|
|
|
|
|
All three use an external SQL server such as PostgreSQL. This can create a potential single source
|
|
|
|
of failure and performance limitation compared to Kanidm which opted to write our own high
|
|
|
|
performance database and replication system instead based on our experience with enterprise
|
|
|
|
LDAP servers.
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
2022-10-26 00:18:25 +02:00
|
|
|
## Developer Getting Started
|
2020-08-24 04:15:21 +02:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
If you want to contribute to Kanidm there is a getting started [guide for developers]. IDM is a
|
2022-12-26 23:52:03 +01:00
|
|
|
diverse topic and we encourage contributions of many kinds in the project, from people of all
|
|
|
|
backgrounds.
|
2019-12-03 07:03:05 +01:00
|
|
|
|
2023-05-31 09:52:33 +02:00
|
|
|
When developing the server you should refer to the latest commit documentation instead.
|
2019-03-22 01:09:05 +01:00
|
|
|
|
2024-03-12 04:38:43 +01:00
|
|
|
- [Kanidm book (latest commit)](https://kanidm.github.io/kanidm/master/)
|
2019-02-02 02:44:31 +01:00
|
|
|
|
2024-03-12 04:38:43 +01:00
|
|
|
[guide for developers]: https://kanidm.github.io/kanidm/stable/DEVELOPER_README.html
|