Автентифікація

Keycloak

Open source рішення для керування ідентифікацією й доступом із SSO, OIDC, SAML та ролями.

Що це

Keycloak це сервер ідентифікації, який ви розгортаєте самі. Він керує користувачами, ролями, групами та сесіями, а застосунки делегують йому вхід через OIDC, OAuth 2.0 чи SAML.

Підтримує соціальний вхід, федерацію з LDAP та Active Directory, багатофакторну автентифікацію, passkeys та кастомні теми. Структура: realms (ізольовані простори), clients (застосунки), users, roles.

Розробку почала Red Hat, у 2023 році проєкт прийняли до CNCF як incubating. Дає повний контроль над даними, але потребує адміністрування, оновлень і розміщення на власній інфраструктурі.

Коли брати

  • Потрібен SSO для багатьох внутрішніх застосунків без плати за користувача.
  • Вимоги до зберігання даних на своїй інфраструктурі.
  • Інтеграція з корпоративним LDAP чи Active Directory.

Коли не варто

  • Маленька команда без часу адмініструвати сервіс: краще керований Auth0 чи Clerk.
  • Простий застосунок з одним способом входу.

Ключові поняття

Realm
Ізольований простір користувачів, клієнтів і налаштувань.
Client
Застосунок або API, який довіряє Keycloak.
Roles / Groups
Права доступу на рівні realm чи клієнта та групування користувачів.
Identity brokering
Вхід через зовнішніх провайдерів (Google, GitHub, інший IdP).

Приклад

Локальний запуск Keycloak у dev-режимі.

Питання на співбесіді

  1. 1. Що таке realm у Keycloak?

    Ізольований контейнер для користувачів, ролей, клієнтів і налаштувань. Різні realm не бачать даних одне одного, тож зручно розділяти середовища або клієнтів.

  2. 2. Як застосунок інтегрується з Keycloak?

    Реєструється як client і використовує OIDC Authorization Code з PKCE. Далі перевіряє підписані токени за ключами з JWKS.

  3. 3. Чим Keycloak відрізняється від Auth0?

    Keycloak open source і розміщується у вас, Auth0 це керований платний сервіс. Перший дає контроль і низьку ціну за користувача, другий економить час на експлуатацію.

Питання з банку співбесід

Логотипи належать їхнім власникам і використані лише для ідентифікації. Іконки: Simple Icons (CC0), Devicon (MIT).

Розділи платформи