Photo by Jorien Loman on Unsplash
Photo by Jorien Loman on Unsplash

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

Комментарии (1)


  1. MYSTERYMAN
    07.04.2022 20:23
    +10

    Дно еще не пробито, следующий уровень публикаций хабра будет просто спойлер с ссылками на курсы?