Kanidm: A simple, secure, and fast identity management platform
  • Rust 71.8%
  • Python 26.6%
  • HTML 0.8%
  • Shell 0.3%
  • Makefile 0.2%
  • Other 0.1%
Find a file
Ben Godfrey eba7a83e18
Disable multithreading on RADIUS when DEBUG is False. (#4177)
* multithreading and python code in the FreeRADIUS `rlm_python3` module is problematic, so disabling threading is a workaround - ref https://lists.freeradius.org/pipermail/freeradius-users/2020-January/097089.html and testing
2026-02-27 13:19:21 +10:00
.cargo Prevent memory exhaustion on freebsd builds (#3818) 2025-08-24 00:28:49 +10:00
.devcontainer Devcontainertainertainer (#3251) 2024-12-02 11:02:56 +00:00
.github Fixed small typo in how_does_oauth2_work.md (#4138) 2026-02-16 01:17:44 +00:00
artwork shrinking logo.svg and re-brotli-ing others (#4069) 2026-01-16 10:10:48 +10:00
book Move the grafana group creation step (#4160) 2026-02-22 09:56:05 +00:00
examples Bye bye lazy static (#4134) 2026-02-14 03:13:17 +00:00
libs Bump the all group across 1 directory with 20 updates (#4163) 2026-02-23 19:14:48 +10:00
platform 20260122 SCIM batch (#4088) 2026-02-11 01:35:21 +00:00
proto Don't revert admin changes in some groups during migrcation (#4176) 2026-02-26 19:42:43 +10:00
pykanidm pykanidm v1.3.0 - major rewrite to use openapi-generated codebase based on 1.9.0 spec (#4149) 2026-02-19 03:40:43 +00:00
rlm_python Disable multithreading on RADIUS when DEBUG is False. (#4177) 2026-02-27 13:19:21 +10:00
scripts Adding scripts for testing nginx and proxyv1 ldap, updating haproxy-protocol (#4087) 2026-02-11 10:18:38 +10:00
server Don't revert admin changes in some groups during migrcation (#4176) 2026-02-26 19:42:43 +10:00
tools Bump the all group across 1 directory with 20 updates (#4163) 2026-02-23 19:14:48 +10:00
unix_integration Bump the all group across 1 directory with 20 updates (#4163) 2026-02-23 19:14:48 +10:00
.codespell_dictionary Unixd build/debugging updates (#2350) 2023-12-03 06:34:02 +00:00
.codespell_ignore Splitting the SPAs (#2219) 2023-10-27 06:03:58 +00:00
.dockerignore build: Create daemon image from scratch (#3452) 2025-02-25 14:16:08 +10:00
.editorconfig Javascript linting (#3329) 2025-01-04 15:25:46 +10:00
.gitignore Schema again (#3706) 2025-07-02 13:13:58 +10:00
.gitmodules Improve deb packaging, add aarch64 (#3083) 2024-10-15 02:27:48 +00:00
.rustfmt.toml Rework deps (#1079) 2022-10-01 16:08:51 +10:00
.yamllint headless webdriver testing, starting on brotli feature (#1844) 2023-07-10 16:49:09 +10:00
AGENTS.md Add AGENTS.md instructions (#4148) 2026-02-18 06:57:27 +00:00
Cargo.lock Bump the all group across 1 directory with 20 updates (#4163) 2026-02-23 19:14:48 +10:00
Cargo.toml Bump the all group across 1 directory with 20 updates (#4163) 2026-02-23 19:14:48 +10:00
clippy.toml FIX: make tracing-forest stop panic'ing things when enabling otel (#4105) 2026-02-04 05:45:38 +00:00
CODE_OF_CONDUCT.md Update docs, doc fmt (#3710) 2025-07-04 05:33:14 +00:00
CODEOWNERS Added shell.nix to create dev environment (#3362) 2025-01-21 09:26:43 +00:00
CONTRIBUTORS.md Implement OIDC auth for service-accounts (RFC8963) (#4021) 2026-01-06 12:54:37 +10:00
deno.json updating docs around packages (#3695) 2025-06-21 01:44:43 +00:00
LICENSE.md Update docs, doc fmt (#3710) 2025-07-04 05:33:14 +00:00
Makefile Python OpenAPI-based internals (#4119) 2026-02-11 04:12:57 +00:00
README.md chore: Release Notes (#4129) 2026-02-11 06:08:09 +00:00
RELEASE_NOTES.md Warn about systemd-userdb (#4147) 2026-02-19 01:28:21 +00:00
rust-toolchain.toml Added shell.nix to create dev environment (#3362) 2025-01-21 09:26:43 +00:00
SECURITY.md Add user facing SCIM pagination / sorting (#3725) 2025-07-10 15:54:25 +10:00
shell.nix Update shell.nix to work with stable nixpkgs (#3514) 2025-03-20 13:06:51 +10:00

Kanidm - Simple and Secure Identity Management

Kanidm Logo

About

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.

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!

To achieve this we rely heavily on strict defaults, simple configuration, and self-healing components. This allows Kanidm to support small home labs, families, small businesses, and all the way to the largest enterprise needs.

If you want to host your own authentication service, then Kanidm is for you!

Supported Features

Kanidm supports:

  • Passkeys (WebAuthn) for secure cryptographic authentication
    • Attested passkeys for high security environments
  • Application Portal allowing easy access to linked applications
  • OAuth2/OIDC authentication provider for SSO
  • OAuth2/OIDC service access with token exchange services
  • Linux/Unix integration with TPM protected offline authentication
  • SSH key distribution to Linux/Unix systems
  • RADIUS for network and VPN authentication
  • Read-only LDAPs gateway for Legacy Systems
  • Complete CLI tooling for Administration
  • Two node high availability using database replication
  • A WebUI for user self-service
  • And more!

Documentation / Getting Started / Install

If you want to read more about what Kanidm can do, you should read our documentation.

We also have a set of support guidelines for what the project team will support.

Code of Conduct / Ethics

All interactions with the project are covered by our code of conduct.

When we develop features, we follow our project's guidelines on rights and ethics.

Getting in Contact / Questions

We have a Matrix-powered gitter community channel where project members are always happy to chat and answer questions. Alternately you can open a new GitHub discussion.

What does Kanidm mean?

Kanidm is a portmanteau of 'kani' and 'idm'. Kani is Japanese for crab, related to Rust's mascot Ferris the crab. Identity management is often abbreviated to 'idm', and is a common industry term for authentication providers.

Kanidm is pronounced as "kar - nee - dee - em".

Kanidm Anthem

An anthem is a popular song, especially a rock song felt to sum up the attitudes or feelings associated with a period or social group.

The Kanidm anthem is Crab Rave - Noisestorm

Comparison with other services

LLDAP

LLDAP is a similar project focused on providing a small, easy-to-administer LDAP server with a web administration portal. Both LLDAP and Kanidm use the Kanidm LDAP bindings and share many common design ideas.

The primary advantage of Kanidm over LLDAP is its broader built-in feature set, including native support for OAuth2 and OIDC. In contrast, LLDAP requires integration with an external portal like Keycloak to provide these features. However, LLDAPs simplicity — offering fewer features — can make it easier to deploy and manage for certain use cases.

While LLDAP provides a simple Web UI as the main user management interface, Kanidm currently offers administrative functionality primarily via its CLI, with its Web UI designed more for user interactions than for administration.

If Kanidm feels too complex for your needs, LLDAP is a smaller and simpler alternative. But if you want a more feature-rich solution out of the box, Kanidm will likely be a better fit.

389-ds / OpenLDAP

Both 389 Directory Server (389-ds) and OpenLDAP are general-purpose LDAP servers. They provide LDAP functionality only, so you must supply your own Identity Management (IDM) components—such as an OIDC portal, self-service web UI, command-line tools for administration, and more.

If you require maximum customization of your LDAP deployment, 389-ds or OpenLDAP may be better choices. However, if you prefer an easy-to-set-up service focused specifically on IDM, Kanidm is a superior option.

Kanidm draws inspiration from both 389-ds and OpenLDAP and already matches or exceeds 389-ds in directory service performance and scalability, while offering a richer feature set.

FreeIPA

FreeIPA is a comprehensive identity management system for Linux/Unix, bundling many services including LDAP, Kerberos, DNS, and a Certificate Authority.

However, FreeIPA is complex, consisting of numerous components and configurations, which leads to higher resource usage and administrative overhead during setup and upgrades.

Kanidm aims to offer the feature richness of FreeIPA but with a lighter resource footprint and simpler management. In benchmarks with 3,000 users and 1,500 groups, Kanidm demonstrated approximately three times faster search operations and five times faster modifications and additions (results may vary, but Kanidm generally outperforms FreeIPA in speed).

If you want a full IDM solution thats easier to manage and more efficient, Kanidm is worth considering.

Keycloak

Keycloak is an OIDC/OAuth2/SAML provider that can layer WebAuthn authentication on top of existing IDM systems. Although it can operate as a stand-alone IDM solution, it is commonly used alongside an LDAP server or similar backend.

Deploying Keycloak requires significant configuration and expertise. Its extensive customization options for authentication workflows can make initial setup challenging.

Kanidm does not require Keycloak to provide OAuth2 and other services. It integrates many of these capabilities in a simpler, more streamlined way right out of the box.

Rauthy

Rauthy is a minimal OIDC provider supporting WebAuthn—using some of the same libraries as Kanidm.

However, Rauthy focuses exclusively on OIDC and does not support additional use cases such as RADIUS or Unix authentication.

If you need a minimal OIDC-only provider, Rauthy is an excellent choice. But if you require a broader feature set, Kanidm is the better option.

Authentik / Authelia / Zitadel

Authentik (written in Python), Authelia, and Zitadel (both written in Go) are IDM providers similar to Kanidm in many respects. However, all three have weaker support for Unix authentication and do not provide the advanced authentication policies or WebAuthn Attestation capabilities that Kanidm offers.

Additionally, these projects rely on external SQL databases such as PostgreSQL, which can introduce potential single points of failure and performance bottlenecks. In contrast, Kanidm uses its own high-performance database and replication system, developed based on enterprise LDAP server experience.

Developer Getting Started

If you want to contribute to Kanidm there is a getting started guide for developers. IDM is a diverse topic and we encourage contributions of many kinds in the project, from people of all backgrounds.

When developing the server you should refer to the latest commit documentation instead.