Как сделать авторизацию через Госуслуги на своем сайте? - коротко
Зарегистрируйтесь в личном кабинете разработчика Госуслуг, получите client_id, client_secret и укажите redirect_uri; затем на сайте реализуйте OAuth 2.0‑поток: перенаправьте пользователя на https://esia.gov.ru/aas/oauth2/… с параметрами client_id, response_type=code, а после получения кода обменяйте его на токен через token‑endpoint и используйте полученный токен для запроса данных о пользователе.
Как сделать авторизацию через Госуслуги на своем сайте? - развернуто
Для внедрения входа через портал Госуслуг потребуется пройти несколько чётко определённых этапов, каждый из которых имеет конкретные технические требования.
Сначала необходимо оформить статус поставщика государственных услуг. Для этого в личном кабинете Госуслуг регистрируется организация, заполняются реквизиты, указываются цели использования API и подаётся запрос на получение доступа к сервису «Авторизация через Госуслуги». После одобрения вы получаете уникальный идентификатор клиента (client_id) и секрет (client_secret).
Следующий шаг – получение и установка цифрового сертификата. Госуслуги работают по протоколу OAuth 2.0 с обязательным TLS‑шифрованием и подписью запросов. С помощью Центра сертификации ФСБ оформляете сертификат подписи (PKCS#12), который будет использоваться при обращении к эндпоинтам Госуслуг. Файл сертификата следует разместить на защищённом сервере и настроить приложение на его загрузку.
Далее реализуется процесс аутентификации:
- Формирование URL‑перенаправления. На ваш сайт ставится кнопка «Войти через Госуслуги». При её нажатии пользователь перенаправляется на URL авторизации Госуслуг, где передаются параметры:
- client_id – ваш идентификатор;
- redirect_uri – адрес, куда будет возвращён пользователь после подтверждения;
- response_type=code;
- scope – перечень запрашиваемых прав (например,
openid profile); - state – случайная строка для защиты от CSRF.
- Получение кода авторизации. После подтверждения пользователем запроса Госуслуги перенаправляют его обратно на ваш redirect_uri, добавляя к URL параметр
codeи тот жеstate. Ваш сервер проверяет соответствиеstateи сохраняет полученный код. - Обмен кода на токен. На сервере отправляется POST‑запрос к токен‑эндпоинту Госуслуг. В запросе указываются:
- grant_type=authorization_code;
- code – полученный ранее код;
- redirect_uri – тот же, что использовался в первом шаге;
- client_id и client_secret (или подпись запросом с сертификатом).
В ответе возвращается access_token, refresh_token и id_token (JWT‑токен с информацией о пользователе).
- Проверка подписи JWT. Полученный id_token необходимо проверить подпись с помощью публичного ключа, опубликованного Госуслугами (JWKS‑endpoint). Это гарантирует подлинность данных.
- Получение профиля пользователя. При необходимости делается запрос к пользовательскому API, передавая в заголовке Authorization: Bearer
. Ответ содержит ФИО, ИНН, дату рождения и другие атрибуты, которые вы сохраняете в базе и связываете с учётной записью сайта. - Создание сессии. После успешного получения и проверки данных создаётся локальная сессия (cookie, JWT или иной механизм), и пользователь считается авторизованным.
Необходимо учитывать несколько дополнительных аспектов:
- Обновление токенов. Access_token имеет ограниченный срок жизни (обычно 1 час). При истечении срока используйте refresh_token для получения нового access_token без повторного вмешательства пользователя.
- Обработка ошибок. Госуслуги могут вернуть коды ошибок (invalid_grant, unauthorized_client и др.). Ваш код должен корректно реагировать, выводя пользователю понятное сообщение и предлагая повторить попытку.
- Безопасность. Храните client_secret и сертификат в защищённом хранилище, ограничьте доступ к ним только процессу веб‑приложения. Используйте HTTPS на всех этапах, включая redirect_uri.
- Тестовый режим. Перед запуском в продакшн проверяйте интеграцию в песочнице Госуслуг, где вы можете имитировать пользовательские сценарии без реального доступа к личным данным.
- Логирование. Ведите журнал всех запросов к API Госуслуг, включая время, параметры и коды ответов. Это упростит отладку и поможет при взаимодействии с поддержкой сервиса.
После завершения всех пунктов ваш сайт будет способен принимать пользователей, подтверждающих свою личность через официальную госслужбу. Такой подход повышает степень доверия к вашему ресурсу, упрощает регистрацию и избавляет от необходимости создавать собственную систему управления паролями.