Интеграция 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
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

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, обучим команду. Свяжитесь с нами для оценки вашего проекта — мы бесплатно проанализируем вашу инфраструктуру и предложим оптимальное решение.