«Войти через Госуслуги» на сайте — не отдельный виджет, а интеграция с ЕСИА (Единая система идентификации и аутентификации). Пользователь проходит аутентификацию на портале Госуслуг, а ваш сервис получает подтверждённые государством атрибуты: ФИО, СНИЛС, ИНН, телефон, 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. Регистрация информационной системы (ИС)
На техпортале ЕСИА:
- Зарегистрировать ИС → получить мнемонику (аналог
client_id) - Указать URL системы и
redirect_uri(только HTTPS) - Загрузить XML метаданных с открытым ключом
- Выбрать алгоритм подписи: GOST
- Запросить доступ к тестовой среде
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. Тест → прод
- Отладка в тестовой среде с тестовыми учётками
- Заявка на промышленную среду с актуальными метаданными
- 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-разработки с учётом периметра и аудита.
Обсудить внедрение: оставить заявку · направления студии

