Інтеграція Keycloak для аутентифікації на сайті — SSO, OIDC, LDAP

Facepalm: черговий проєкт із самописною аутентифікацією. Кожен із п'яти мікросервісів тягне свою базу хешів паролів. OAuth загорнуто в милиці на PHP та Node.js. Ми бачимо це повсюдно в legacy-системах. Така архітектура плодить N+1 таблицю сесій, вразливості в JWT (немає ротації ключів) та відсутніст

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Інтеграція Keycloak для аутентифікації на сайті — SSO, OIDC, LDAP
Складний
~3-5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1418
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    983
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1242
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    997

Facepalm: черговий проєкт із самописною аутентифікацією. Кожен із п'яти мікросервісів тягне свою базу хешів паролів. OAuth загорнуто в милиці на PHP та Node.js. Ми бачимо це повсюдно в legacy-системах. Така архітектура плодить N+1 таблицю сесій, вразливості в JWT (немає ротації ключів) та відсутність єдиного входу між сервісами. Середня економія на ліцензіях при міграції з Auth0 або Okta становить 60–80%.

Keycloak — open-source Identity and Access Management від Red Hat. Self-hosted аналог Auth0 та Okta, підтримує OpenID Connect, OAuth 2.0, SAML 2.0. Ми використовуємо Keycloak у продакшені понад 5 років, розгорнули 15+ промислових кластерів. Аутентифікація працює без збоїв навіть при 10 000 RPS. Зв'яжіться з нами — безкоштовно проаналізуємо вашу IAM-інфраструктуру.

Чому Keycloak кращий за самописну аутентифікацію?

У самописних рішеннях типові проблеми: N+1 таблиця сесій, вразливості в JWT (відсутність ротації), відсутність SSO між сервісами. Keycloak вирішує їх з коробки:

  • Єдиний реєстр користувачів — не дублюємо дані в кожному застосунку
  • Автоматична ротація ключів підпису JWT — знижуємо ризик компрометації
  • Підтримка LDAP/AD — співробітники входять з корпоративним логінами
  • Брокер соціальних мереж — OAuth для Google/GitHub без зайвого коду

Крім того, Keycloak надає готовий UI аутентифікації: сторінки логіна, самореєстрація, скидання пароля, MFA. Все налаштовується через адмінку. Розробник концентрується на бізнес-логіці, а не на написанні купи middleware.

Порівняння Keycloak та самописної реалізації

Критерій Keycloak Самописне рішення
Розробка Години на налаштування Тижні або місяці коду
Безпека Сертифіковано, OWASP top-10 Ризик помилок
Масштабування Горизонтальне, кластер Вимагає доробок
Підтримка протоколів OIDC, OAuth2, SAML з коробки Тільки базовий OAuth2

Як налаштувати LDAP-інтеграцію?

У Keycloak Admin Console:

  • User Federation → Add provider → LDAP
  • Вказати Connection URL, Bind DN, Users DN
  • Налаштувати маппінг атрибутів: CN → username, mail → email

Після налаштування співробітники входять з корпоративними логінами напряму через Keycloak. Це особливо важливо для компаній з Active Directory. Процес займає 1–2 дні та не вимагає змін у застосунках.

Розгортання Keycloak: Docker та налаштування

Рекомендуємо використовувати Docker Compose для підняття Keycloak з PostgreSQL:

version: '3.8' services: keycloak: image: quay.io/keycloak/keycloak:latest environment: - KEYCLOAK_ADMIN=admin - KEYCLOAK_ADMIN_PASSWORD=admin - KC_DB=postgres - KC_DB_URL=jdbc:postgresql://postgres:5432/keycloak - KC_DB_USERNAME=keycloak - KC_DB_PASSWORD=password ports: - '8080:8080' depends_on: - postgres postgres: image: postgres:15 environment: - POSTGRES_DB=keycloak - POSTGRES_USER=keycloak - POSTGRES_PASSWORD=password 

Після запуску переходимо в адмінку, створюємо realm та клієнта.

Налаштування Realm та Client

  1. Створити Realm (логічно ізольована область аутентифікації)
  2. Створити Client для веб-застосунку:
    • Client type: OpenID Connect
    • Client authentication: On (confidential)
    • Valid redirect URIs: https://yourdomain.com/auth/callback
    • Valid post logout redirect URIs: https://yourdomain.com
  3. Зберегти Client ID та Client Secret (Credentials tab)

Інтеграція з Laravel через Socialite

// config/services.php 'keycloak' => [ 'client_id' => env('KEYCLOAK_CLIENT_ID'), 'client_secret' => env('KEYCLOAK_CLIENT_SECRET'), 'redirect' => env('KEYCLOAK_REDIRECT_URI'), 'base_url' => env('KEYCLOAK_BASE_URL'), // e.g. http://localhost:8080 'realm' => env('KEYCLOAK_REALM'), ], 
// Socialite driver use Socialite; $user = Socialite::driver('keycloak')->user(); 

Пряма верифікація JWT (для API)

Keycloak публікує JWKS за стандартним URL. API може перевіряти JWT напряму без звернення до Keycloak:

use Firebase\JWT\JWK; use Firebase\JWT\JWT; $jwks = json_decode(file_get_contents('https://keycloak/auth/realms/{realm}/protocol/openid-connect/certs'), true); $keys = JWK::parseKeySet($jwks); $decoded = JWT::decode($token, $keys, ['RS256']); 

Logout

Keycloak підтримує front-channel та back-channel logout (RP-Initiated Logout):

$redirectUri = 'https://yourdomain.com'; $logoutUrl = 'https://keycloak/auth/realms/{realm}/protocol/openid-connect/logout?' . http_build_query([ 'id_token_hint' => $idToken, 'post_logout_redirect_uri' => $redirectUri ]); return redirect($logoutUrl); 

Строки та вартість

Кейс: інтернет-магазин з SSO та LDAP

Проєкт: 3 фронти, 2 API, legacy AD. Результат:

  • Уніфікували вхід для 5000 співробітників через AD
  • Час аутентифікації скоротили на 40%
  • Знизили витрати на ліцензії Auth0 до нуля
Етап Що робимо Час
Розгортання Keycloak Docker + PostgreSQL, налаштування SSL 1 день
Realm та клієнти Створення realm, client, ролей, користувачів 0.5 дня
Інтеграція з Laravel Socialite, callback, сесії 1.5 дня
JWT middleware Перевірка токенів, видача refresh 1 день
LDAP/AD (опціонально) Налаштування user federation, синхронізація 1–2 дні
Тестування Unit, інтеграційні, навантажувальні 1 день

Разом: 5–7 робочих днів. Вартість розраховується індивідуально — залежить від складності та додаткових вимог. Замовте консультацію — ми безкоштовно оцінимо ваш проєкт і надішлемо комерційну пропозицію.

Що входить у результат

  • Робоча інфраструктура Keycloak (Docker Compose, SSL, бекапи)
  • Realm з налаштованими клієнтами та ролями
  • Інтеграція з Laravel через Socialite (або будь-який фреймворк)
  • JWT middleware для API
  • LDAP/AD синхронізація (за запитом)
  • Документація: схема потоків, опис налаштувань, скрипти деплою
  • Відеозапис навчання вашої команди (1 година)
  • Підтримка 1 місяць (Telegram/пошта)

Більше 5 років працюємо з Keycloak, 15+ успішних інтеграцій. Сертифіковані спеціалісти Red Hat. Гарантуємо: розгорнемо Keycloak без простоїв, налаштуємо під ваш compliance, навчимо команду. Зв'яжіться з нами для оцінки вашого проєкту — ми безкоштовно проаналізуємо вашу інфраструктуру та запропонуємо оптимальне рішення.