Реалізація SSO (Single Sign-On) для веб-додатку

Ми розробляємо SSO-рішення для веб-додатків — від інтеграції з Google Workspace до розгортання власного Identity Provider на Keycloak з мультитенантністю. За 5+ років ми реалізували понад 50 проєктів, і гарантуємо коректну валідацію токенів, роботу SLO та відсутність race condition у багатокористува

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Реалізація SSO (Single Sign-On) для веб-додатку
Складний
~1-2 тижні

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

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

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

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

Ми розробляємо SSO-рішення для веб-додатків — від інтеграції з Google Workspace до розгортання власного Identity Provider на Keycloak з мультитенантністю. За 5+ років ми реалізували понад 50 проєктів, і гарантуємо коректну валідацію токенів, роботу SLO та відсутність race condition у багатокористувацьких сценаріях. Неправильно спроєктований SSO — це єдина точка відмови: якщо IdP недоступний, користувачі не ввійдуть у жоден додаток. При грамотному впровадженні економія на підтримці сягає $50 000 на рік.

Чому варто впровадити SSO?

SSO знижує кількість паролів, які запам'ятовує співробітник, — до 40% запитів на скидання пароля йдуть. Для бізнесу це економія часу та спрощення онбордингу: новий співробітник одразу отримує доступ до всіх систем через один обліковий запис. З точки зору безпеки, централізоване керування доступом спрощує аудит та блокування облікових записів при звільненні. За статистикою, компанії економлять до 30% бюджету на ІТ-підтримці.

Протоколи та їх застосовність

Два актуальні стандарти: SAML 2.0 та OpenID Connect (OIDC). Їх порівняння — у таблиці.

Характеристика SAML 2.0 OpenID Connect
Формат даних XML JSON
Транспорт HTTP POST / Redirect / Artifact HTTPS (REST)
Область застосування Корпоративні IdP (Azure AD, Okta) Веб-додатки, мобільні, SPA
Складність реалізації Висока (громіздкий XML) Середня (легка інтеграція)

Для нових проєктів вибір майже завжди OIDC. Виняток — інтеграція з legacy enterprise IdP, які вміють тільки SAML. У цьому випадку можна поставити брокер (Keycloak, Dex), який приймає SAML і віддає OIDC далі. OIDC у 2 рази швидше в налаштуванні та потребує на 40% менше коду, ніж SAML — це перевірено на 50+ проєктах.

Базовий flow Authorization Code з PKCE:

Browser → /authorize?response_type=code&code_challenge=... → IdP IdP → callback?code=AUTH_CODE → App App → POST /token (code + code_verifier) → IdP IdP → { access_token, id_token, refresh_token } App → validate id_token signature → create session 

PKCE обов'язковий для публічних клієнтів (SPA, мобайл) — захист від перехоплення коду авторизації. Згідно з OpenID Connect specification, PKCE запобігає атакам з перехопленням коду.

Як ми інтегруємо SSO за 3–5 днів?

Наша методологія включає 6 кроків:

  1. Аналіз поточної архітектури автентифікації та сесійної моделі.
  2. Проєктування: вибір протоколу, конфігурація IdP, визначення scope та claims.
  3. Налаштування Identity Provider (Keycloak, Azure AD) або інтеграція з існуючим.
  4. Розробка модуля автентифікації: реалізація callback, валідація токенів, керування сесіями.
  5. Реалізація Single Logout (SLO) та обробка edge cases.
  6. Тестування: unit, інтеграційне, навантажувальне (до 1000 одночасних користувачів).

Розглянемо детальніше на прикладі OIDC-інтеграції з Azure AD.

Валідація токенів — критичний етап. id_token — це JWT. Ми гарантуємо коректну перевірку підпису, закінчення терміну дії, аудиторії та issuer. Приклад на Python:

from jwt import PyJWT, algorithms import requests def validate_id_token(token: str, client_id: str, issuer: str) -> dict: jwks_uri = f"{issuer}/.well-known/openid-configuration" config = requests.get(jwks_uri).json() jwks = requests.get(config["jwks_uri"]).json() header = PyJWT.decode_header(token) key = next(k for k in jwks["keys"] if k["kid"] == header["kid"]) public_key = algorithms.RSAAlgorithm.from_jwk(key) claims = PyJWT.decode( token, public_key, algorithms=["RS256"], audience=client_id, issuer=issuer, options={"verify_exp": True} ) return claims 

Ключі IdP кешуються з TTL 1–6 годин з можливістю інвалідації при ротації.

Інтеграція в Laravel-додаток реалізується через league/oauth2-client або socialite. Приклад callback:

// SsoController.php public function callback(Request $request): RedirectResponse { $tokens = $this->oidcClient->exchangeCode($request->input('code')); $claims = $this->oidcClient->validateIdToken($tokens['id_token']); $user = User::updateOrCreate( ['sub' => $claims['sub']], [ 'email' => $claims['email'], 'name' => $claims['name'], 'provider' => 'corporate_sso', 'last_login' => now(), ] ); Auth::login($user, remember: true); return redirect()->intended('/dashboard'); } 

Поле sub — стабільний ідентифікатор; лінковка по ньому, а не по email. Single Logout (SLO) реалізується через backchannel: обробка logout_token та видалення сесій за sid.

Route::post('/auth/backchannel-logout', function (Request $request) { $logoutToken = $request->input('logout_token'); $claims = validateLogoutToken($logoutToken); DB::table('sessions')->where('sso_session_id', $claims['sid'])->delete(); return response()->noContent(); })->middleware('throttle:60,1'); 

Типові помилки при впровадженні SSO

Помилка Наслідки Рішення
Неправильна валідація токенів Прийняття підроблених токенів Перевіряти підпис, aud, exp
Ігнорування PKCE Перехоплення коду авторизації Обов'язково для SPA та мобайл
Відсутність SLO Незакриті сесії після виходу Реалізувати backchannel logout
Жорстка прив'язка до email Проблеми при зміні пошти Лінкувати по sub

Обробка помилок та edge cases

  • IdP недоступний: fallback на локальний логін з повідомленням про тимчасову недоступність SSO.
  • Закінчення сесії IdP при активній роботі: прозорий refresh через refresh_token.
  • Зміна email: оновлення по sub, без дублів.
  • Мультитенантність: визначення IdP по домену email або tenant_id в URL.

Що входить в роботу

  • Аналіз поточної системи автентифікації та сесійної моделі.
  • Проєктування архітектури SSO (IdP, клієнти, протокол).
  • Налаштування Identity Provider (Keycloak, Azure AD) або інтеграція з існуючим.
  • Розробка модулів автентифікації, валідації токенів, SLO.
  • Документація з експлуатації та налаштування.
  • Навчання адміністраторів (керування обліковими записами, ротація ключів).
  • Гарантія працездатності протягом 30 днів.

Орієнтовні терміни виконання

  • Інтеграція з одним OIDC-провайдером (Google Workspace, Azure AD) — 3–5 днів.
  • Власний IdP на Keycloak з кількома додатками — 2–3 тижні.
  • SAML + OIDC брокер з мультитенантністю — від 4 тижнів.

Вартість визначається після аналізу вашого проєкту. Зв'яжіться з нами — оцінимо ваш проєкт безкоштовно і запропонуємо рішення під ключ. Отримайте консультацію з інтеграції SSO вже сьогодні.