Cравнение Authelia, Authentik, Keycloak и ZITADEL#
Введение#
Сегодня мы сравним четыре популярных решения для SSO и авторизации, по простому сервера авторизации и аутентификации: Authelia, Authentik, Keycloak и Zitadel. Если вы создаете свою домашнюю, а может и рабочую, инфраструктуру и не знаете, что выбрать — эта статья/видео для вас.
Когда вы разворачиваете несколько сервисов, в особенности которые доступны из внешнего мира — Nextcloud, Plex, да любой сервис — возникает вопрос: как централизованно управлять входом, паролями и правами доступа? SSO — Single Sign-On — позволяет авторизоваться один раз и использовать доступ везде. А ещё — можно подключить двухфакторку, LDAP, OAuth2, разграничить роли и настраивать политики доступа.
Authelia vs Authentik vs Keycloak vs ZITADEL — Что выбрать для аутентификации и SSO?#
Если вы строите собственную инфраструктуру и ищете способ централизованной аутентификации, двухфакторной защиты и реализации SSO (Single Sign-On), скорее всего, вы столкнулись с такими решениями, как Authelia, Authentik, Keycloak и ZITADEL. Все они решают одну и ту же задачу — управление доступом, но делают это по-разному и ориентированы на разные сценарии.
В этой статье я подробно сравню все четыре инструмента и подскажу, какое решение лучше подойдет под ваши нужды: от простого self-hosted решения до корпоративных и/или облачных решений.
Мы рассмотрим 4 open-source решения. Я разбил их по алфавиту, но как это не странно, получилось не только разделение по алфавиту, но и по встроенному функционалу, который есть у первой пары, но нет у второй.
- Authelia — простая и строгая,
- Authentik — красивый и гибкий,
- Keycloak — мощный, строгий, корпоративный,
- Zitadel — облачный, с современным API.
Authelia#
Authelia — это self-hosted reverse proxy companion, предназначенный для защиты веб-приложений с помощью двухфакторной аутентификации и контроля доступа. Authelia работает как прокси-компаньон, добавляя безопасность и SSO поверх NGINX, Traefik или HAProxy.
Authelia — это больше как reverse proxy guard. Устанавливается в меру просто, конфигурация — через YAML. Работает как промежуточный слой между пользователем и вашими сервисами. Нет полноценного UI для управления пользователями — всё через конфиг. Подходит, если у вас 5–10 сервисов и вы хотите всё держать в конфиге как код.
Основные характеристики Authelia#
Характеристика | Описание |
---|---|
Язык | Go, React |
Поддержка SSO | Только OIDC как клиент (не является полноценным IdP) |
2FA | TOTP, WebAuthn, Duo, Push, Social Login |
UI | Ограниченный (есть веб-страница входа, а админ-конфигурация через YAML) |
LDAP/AD | Да, для авторизации и групп |
Поддержка reverse-proxy | Полная: Traefik, NGINX, HAProxy |
Масштабируемость | Да, поддержка Redis, MariaDB/Postgres |
Целевая аудитория | Self-hosted homelab окружение и малый офис |
Authentik#
Authentik — это современный open-source IdP, написанный на Python (Django), который предлагает полноценную поддержку OIDC, SAML, SCIM, UI-интерфейс и мощные политики доступа. Он предназначен как для домашних, так и корпоративных решений.
Authentik — визуально приятное, модульное и гибкое решение. Простая установка через Docker, отличная документация. Поддерживает OAuth2, SAML, LDAP, и много других провайдеров. Можно делать кастомные policy, UI-потоки, кастомные шаблоны входа.
Основные характеристики Authentik#
Характеристика | Описание |
---|---|
Язык | Python (Django) |
Поддержка SSO | OIDC, SAML (как IdP и SP) |
2FA | TOTP, WebAuthn, Email OTP, Duo, Push, Social Login |
UI | Современный интерфейс |
LDAP/AD | Да (в роли источника пользователей) |
Workflow / Policies | Да, визуальные потоки политики и не только |
Масштабируемость | Да (Docker, Kubernetes, поддержка Redis, PostgreSQL) |
Целевая аудитория | Self-hosted, SMB (малый, средний бизнес), DevOps |
Плюсы Authelia и Authentik#
Оба этих решения имеют встроенный web proxy. Это означает, что бесшовно интегрируясь с обратным прокси, оба этих решения могут работать с приложениями, которые не имеею встроенного механизма OIDC или имеют только базовую http аутентицикацию
Keycloak#
Keycloak — это корпоративное open-source решение от Red Hat, предназначенное для централизованной аутентификации и авторизации. Это один из самых мощных и гибких IdP на рынке с поддержкой OIDC, SAML, Kerberos, LDAP и так далее.
Keycloak — настоящая махина. Поддержка всех возможных протоколов и сценариев. Используется в enterprise-проектах, но требует значительных знаний. Настройка порой громоздкая, интерфейс перегружен, но это приложение может все, прям как в Греции.
Основные характеристики Keycloak#
Характеристика | Описание |
---|---|
Язык | Java (Quarkus, раньше WildFly) |
Поддержка SSO | OIDC, SAML, Kerberos, Social Login |
2FA | TOTP, SMS, Email OTP, WebAuthn |
UI | Мощный, но кому-то покажется перегруженным и нелогичным |
LDAP/AD | Да (широкая поддержка) |
Расширяемость | Да, через SPI, расширения и REST API |
Масштабируемость | Отличная, особенно для enterprise |
Целевая аудитория | Крупный enterprise, государственные учреждения |
Zitadel#
ZITADEL — это современный cloud-native Identity & Access Management с открытым исходным кодом, разработанный в Швейцарии. Основной фокус — безопасность, разработчики, DevOps и multitenancy. Доступна как облачная платформа и self-hosted решение.
Zitadel — самое молодое, но уже достаточно зрелое решение. Имеет как облачную, так и open-source версию для Docker. Очень чистый и минималистичный UI, современный API и SDK, хорош для dev-first подхода. Отлично документирован, хотя есть над чем работать. Уже активно и широко используется.
Основные характеристики ZITADEL#
Характеристика | Описание |
---|---|
Язык | Go |
Поддержка SSO | OIDC, SAML, SCIM |
2FA | WebAuthn, TOTP, SMS, Email |
UI | Современный, минималистичный, логичный и приятный |
LDAP/AD | Только в enterprise-подписке (см. документацию) |
Поддержка multi-tenant | Да (одна из главных фич) |
Масштабируемость | Очень высокая, cloud-first решение |
Целевая аудитория | SaaS-платформы, DevOps, разработчики |
Общая сравнительная таблица#
Характеристика | Authelia | Authentik | Keycloak | ZITADEL |
---|---|---|---|---|
Язык разработки | Go | Python (Django) | Java (Quarkus/WildFly) | Go |
Метод установки | Docker, Kubernetes, Binary | Docker, Kubernetes, Binary | Docker, Kubernetes, ZIP-дистрибутив | Docker, Kubernetes, Cloud |
Поддержка SSO (OIDC/SAML) | OIDC (как клиент) | OIDC, SAML (IdP и SP) | OIDC, SAML, Kerberos | OIDC, SAML, SCIM |
Web UI | Ограниченный | Да (современный UI) | Да (богатый, но сложный) | Да (минималистичный UI) |
Поддержка 2FA / MFA | TOTP, WebAuthn, Duo | TOTP, WebAuthn, Email OTP | TOTP, WebAuthn, Email, SMS | TOTP, WebAuthn, SMS, Email |
LDAP / AD интеграция | Авторизация через LDAP | Да (в роли источника пользователей) | Да | Только в Enterprise |
RBAC / ABAC | Через YAML и policy | Да (flow-based) | Да (группы, роли, политики) | Да (RBAC + conditions) |
Масштабируемость | Средняя | Хорошая, | Отличная | Отличная |
Cloud-ready | Нет | Нет | Условно | Да |
Открытый исходный код | Да (Apache 2.0) | Да (MIT) | Да (Apache 2.0) | Да (GNU Affero GPL v3.0) |
Выводы#
Authelia — не является полноценным IdP, а скорее промежуточным слоем аутентификации между пользователем и приложением.
Authentik — активно развивается и удобен для self-hosted сценариев с хорошим UI.
Keycloak — мощный, но тяжёлый. Подходит для корпоративного использования.
ZITADEL — ориентирован на облако, но имеет self-hosted вариант, с акцентом на разработчиков и безопасность.