Автентифікація
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).
Приклад
Питання на співбесіді
1. Що таке realm у Keycloak?
Ізольований контейнер для користувачів, ролей, клієнтів і налаштувань. Різні realm не бачать даних одне одного, тож зручно розділяти середовища або клієнтів.
2. Як застосунок інтегрується з Keycloak?
Реєструється як client і використовує OIDC Authorization Code з PKCE. Далі перевіряє підписані токени за ключами з JWKS.
3. Чим Keycloak відрізняється від Auth0?
Keycloak open source і розміщується у вас, Auth0 це керований платний сервіс. Перший дає контроль і низьку ціну за користувача, другий економить час на експлуатацію.
Питання з банку співбесід
- Сервіс звітів раз на годину тягне дані з вашого API без користувача. Який OAuth2-потік використати?MiddleWeb security
- Користувач натиснув 'Вийти' у застосунку, що використовує Keycloak. Що має статися на клієнті, у бекенді та в провайдері?MiddleWeb security
- API приймає токени від спільного realm, і пентест зайшов в API з id-token. Чому це проблема і як виправити?MiddleWeb security
Схожі технології
- OAuth 2.0Стандарт делегованої авторизації: застосунок отримує обмежений доступ до ресурсів користувача без його пароля.
- OpenID ConnectШар автентифікації поверх OAuth 2.0: клієнт отримує ID token з відомостями про користувача.
- Auth0Керований сервіс автентифікації й авторизації: вхід, SSO, MFA та API-доступ без власного сервера ідентифікації.
- JWTКомпактний підписаний токен у форматі JSON, який несе claims про користувача чи права.
- KubernetesKubernetes це система оркестрації контейнерів: розгортає, масштабує та лікує застосунки на кластері серверів.
- Spring BootНадбудова над Spring для Java і Kotlin, що дає автоналаштування й запуск застосунку однією командою.
Логотипи належать їхнім власникам і використані лише для ідентифікації. Іконки: Simple Icons (CC0), Devicon (MIT).