Поделиться
Поделиться

«Войти через Госуслуги» на сайте — не отдельный виджет, а интеграция с ЕСИА (Единая система идентификации и аутентификации). Пользователь проходит аутентификацию на портале Госуслуг, а ваш сервис получает подтверждённые государством атрибуты: ФИО, СНИЛС, ИНН, телефон, email и др. — в пределах запрошенных scope и согласия пользователя.

Запросы вроде «подключить Госуслуги на сайт», «интеграция ЕСИА» и «OAuth Госуслуги Next.js» в 2026 году актуальны и для госсектора, и для коммерции: банки, МФО, HR, аренда, медицина, маркетплейсы услуг. Ниже — кому это обязательно, как устроен протокол, пошаговое подключение и варианты реализации для стека вроде Next.js (как на othercode.ru).

Важно: статья носит технический характер и не является юридической консультацией. Схему обработки ПДн и основания передачи данных согласуйте с юристом и DPO.

Кому нужна ЕСИА

Категория Требование
Госорганы, бюджетные учреждения Обязательно (с 30 марта 2025 г. — для ряда категорий ИС)
Коммерческие сервисы (.ru и др.) Не обязательно, но полезно при необходимости верифицированной личности
B2G-порталы подрядчиков Часто требуют в ТЗ заказчика

Примеры на рынке: hh.ru, Циан, ряд сервисов Яндекса — у них есть вход через Госуслуги.

Про домен .ru: отдельного требования «только .ru» нет. Критично, чтобы redirect_uri был заранее зарегистрирован в ЕСИА и побайтно совпадал с URL в запросах. На практике используют HTTPS на .ru, .рф, .gov.ru.

Как это работает

Это OAuth 2.0 + OpenID Connect, но с отличием от Google/GitHub: запросы к ЕСИА подписываются ГОСТ-криптографией.

Пользователь → «Войти через Госуслуги»
     → Redirect на esia.gosuslugi.ru/aas/oauth2/ac
        (client_id, scope, state, подпись)
     → Логин на Госуслугах + согласие на данные
     → Redirect на ваш redirect_uri с code
     → POST /aas/oauth2/te (code → access_token, с подписью)
     → GET /rs/prns/{oid}/... (данные пользователя)
     → Сессия на вашем сайте

Боевые эндпоинты (ориентир):

Назначение URL
Авторизация https://esia.gosuslugi.ru/aas/oauth2/ac
Обмен code на token https://esia.gosuslugi.ru/aas/oauth2/te
Данные пользователя https://esia.gosuslugi.ru/rs/prns/{oid}/...

Подпись (client_secret в терминах ЕСИА): PKCS#7 detached signature по конкатенации scope + timestamp + clientId + state, алгоритм ГОСТ Р 34.10-2012, сертификат X.509 зарегистрирован в личном кабинете ИС.

Тестовая среда: esia-portal1.test.gosuslugi.ru (актуальные URL — в методичках Минцифры).

Пошаговое подключение

1. Организационная подготовка

2. Криптография (обязательно при прямой интеграции)

  • КриптоПро CSP (или совместимый СКЗИ) на сервере подписи
  • Ключевая пара ГОСТ Р 34.10-2012 (закрытый — только на сервере)
  • С 2026 г. для новых/обновляемых систем может потребоваться оценка влияния СКЗИ в аккредитованной лаборатории

3. Регистрация информационной системы (ИС)

На техпортале ЕСИА:

  1. Зарегистрировать ИС → получить мнемонику (аналог client_id)
  2. Указать URL системы и redirect_uri (только HTTPS)
  3. Загрузить XML метаданных с открытым ключом
  4. Выбрать алгоритм подписи: GOST
  5. Запросить доступ к тестовой среде

4. Разработка на сайте

Backend обязателен: подпись и обмен токенами — только на сервере. Закрытый ключ никогда не попадает во frontend.

Типовая схема для Next.js:

Route Назначение
GET /api/auth/esia Генерация state, timestamp, подпись, redirect на ЕСИА
GET /api/auth/esia/callback Приём code, обмен на token, запрос /rs/prns/{oid}
Сессия Cookie / JWT после маппинга пользователя в БД
// Упрощённо — псевдокод этапов callback
// 1. Проверить state (CSRF)
// 2. POST на /aas/oauth2/te с подписью
// 3. GET профиля по oid
// 4. upsert User { esiaOid, snils?, inn?, ... }
// 5. createSession(user)

Scope: запрашивайте только нужное — openid, fullname, email, mobile, snils, inn, birthdate, id_doc и т.д. Лишние scope усложняют согласие и комплаенс по 152-ФЗ.

5. Тест → прод

  1. Отладка в тестовой среде с тестовыми учётками
  2. Заявка на промышленную среду с актуальными метаданными
  3. UI: кнопка «Войти через Госуслуги» + политика обработки ПДн

Варианты реализации

Подход Плюсы Минусы
Прямая интеграция (CryptoPro на сервере) Полный контроль, нет посредника Сложность, ГОСТ-инфраструктура
Шлюз (esia.pro, iitrust и др.) Без своего КриптоПро Платно, данные через третью сторону
Микросервис на Java (примеры Минцифры) + Next.js Официальные референсы Два контура поддержки
Keycloak + ESIA adapter Быстрый SSO для многих клиентов Меньше гибкости под кастомный UX

Для Next.js на VPS частый выбор:

  • ESIA-шлюз, если не хотите КриптоПро на своём Linux;
  • отдельный Java-сервис подписи, если нужен полный контроль и уже есть JVM-команда.

Смежные темы: кибербезопасность продуктов, сложные цифровые системы.

152-ФЗ и хранение данных

После входа через ЕСИА вы становитесь оператором (или совместным оператором) обрабатываемых ПДн:

  • Зафиксируйте цель обработки (идентификация, договор, кадры)
  • Обновите политику конфиденциальности и тексты согласия
  • Ограничьте хранение СНИЛС/ИНН — не дублируйте без необходимости
  • Журналируйте факты входа и изменения профиля

Для AI-фич поверх верифицированного профиля — отдельная оценка: AI в закрытом контуре.

Чеклист перед запуском

  • Определена бизнес-цель (закон / верификация клиента)
  • ИС зарегистрирована на техпортале ЕСИА
  • redirect_uri совпадает с прод-URL до символа
  • Подпись ГОСТ работает на staging
  • Scope минимален
  • Политика ПДн и согласия обновлены
  • Тестовая среда пройдена → заявка на прод
  • Мониторинг ошибок token exchange и истечения сертификата

FAQ

Можно ли сделать только на frontend?
Нет. Подпись и client_secret — только backend.

Работает ли с Next.js App Router?
Да, через Route Handlers (app/api/auth/esia/...). Сессию храните в httpOnly cookie.

Нужен ли ЕСИА для обычного корпоративного сайта?
Нет, если не требуется госслужба или верифицированный клиент. Для лендинга студии достаточно email/телеграм-формы.

Сколько занимает внедрение?
Прямая интеграция: от 3–6 недель с криптографией и тестовой средой. Через шлюз — быстрее, но с абонентской платой.


Итог: ЕСИА — зрелый, но требовательный OAuth с ГОСТ. Для Next.js закладывайте серверный контур подписи, минимальный scope и юридически выверенную обработку ПДн. OtherCode проектирует такие интеграции в составе сложных проектов и AI-разработки с учётом периметра и аудита.

Обсудить внедрение: оставить заявку · направления студии