IT-инженер Скотт Чанг сравнил Keycloak и Dex и поделился своими мыслями об этих решениях. Ниже — перевод заметки из блога Скотта на «Медиуме».
Keycloak и Dex — это популярные поставщики OpenID Connect (OIDC) для Kubernetes, поддерживаемые Red Hat.
Я развёртывал и использовал оба решения в среде Kubernetes, так что могу их сравнить.
Keycloak поддерживает те же возможности, что и Dex:
Поставщик OIDC.
Синхронизация пользователей с Github/SAML/LDAP.
Стандартные области OIDC.
API.
Стабильный Helm-чарт.
Но Keycloak умеет больше:
Кастомные области/заявки (claim)
Dex предоставляет несколько нестандартных заявок, но они не кастомизированы. С Keycloak можно вставлять любую пару ключ-значение в атрибут пользователя и включать в токен пользователя как кастомную заявку.REST API
Dex поддерживает только gRPC API. Keycloak поддерживает REST API с хорошей документацией.Федерация LDAP с синхронизацией групп/пользователей
Dex поддерживает коннектор LDAP для аутентификации с помощью сервера LDAP. Keycloak идёт ещё дальше и синхронизирует пользователей и группы LDAP локально для авторизации.Авторизация через локальную роль
Keycloak использует локальную базу данных пользователей, поэтому может настраивать роли для авторизации.Пользовательский веб-интерфейс
Управлять Keycloak можно через пользовательский веб-интерфейс. Очень удобно.Встроенные логи событий
Keycloak показывает в веб-интерфейсе логи событий — для аудита и диагностики.Realm
Используя функцию realm в Keycloak, администраторы могут создавать изолированный виртуальный контекст OIDC. При этом можно одновременно предоставлять сервисы OIDC с другим методом аутентификации через бэкенд.Тема
Для веб-интерфейса можно выбрать тему.Кастомные потоки входа
Keycloak поддерживает кастомные потоки аутентификации для настройки разных потоков для разных клиентов OIDC.2FA — TOTP через Google Authenticator или Free OTP
Keycloak поддерживает TOTP для подключения к разным поставщикам OTP.Клиентские адаптеры для приложений JavaScript.
Автоматическая аутентификация через сервер Kerberos.
Выбор за вами
Dex — этой простой в использовании и настройке поставщик OIDC. Keycloak — это сервис управления идентификацией и доступом (IAM) с базой данных (PostgreSQL, MySQL, MariaDB, H2) для хранения данных о пользователях и группах. Этой базой данных придётся управлять.
Всё зависит от ваших требований и инфраструктуры.
Если у вас уже есть поставщик идентификации (AD, SAML, Github и т. д.) и вам нужен просто интерфейс OIDC для связи приложений с централизованным сервисом, выбирайте Dex.
Если вам нужны кастомные заявки от поставщика OIDC, вы хотите заменить поставщика идентификации и автоматизировать процессы, вам подойдёт Keycloak с поддержкой REST API.
От редакции
И Keycloak, и Dex могут выступать провайдерами аутентификации Kubernetes, при связки с вашим LDAP-сервером и настраивать импорт пользователей и групп.
Это позволит настраивать RBAC для ваших пользователей и использовать auth-proxy, чтобы защитить Kubernetes Dashboard и другие приложения, которые не умеют производить авторизацию самостоятельно.
Курс по Keycloak: https://slurm.club/3x85RdJ
Курс по Kubernetes: https://slurm.club/3Kn57Fr
MYSTERYMAN
Дно еще не пробито, следующий уровень публикаций хабра будет просто спойлер с ссылками на курсы?