Приложение демонстрирует получение авторизационного кода из системы ЕСИА (Госуслуги).
Актуальная версия "Методических рекомендаций по использованию Единой системы идентификации и аутентификации": 2.76.
Предполагается, что регистрация системы в ЕСИА выполнена, и контейнер с сертификатом и приватным ключом получен.
Используется java-криптопровайдер КриптоПро JCP версии 2.0.41789-R4 и Java 8.
КриптоПро JCP должен быть установлен в JDK (JRE), в которой запускается данное приложение.
Для Windows и Java 8 установка КриптоПро JCP может быть выполнена при помощи setup.exe
в скаченном дистрибутиве.
Контейнер КриптоПро читается из стандартного расположения в файловой системе.
Для Windows это C:\Users\%username%\AppData\Local\Crypto Pro\
, куда необходимо поместить директорию с контейнером.
Убедитесь, что Вы видите контейнер с ключом и сертификатом в GUI КриптоПро JCP во вкладке "Хранилища ключей и сертификатов" в папке HDImageStore.
Для работы приложения требуются следующие переменные среды:
Переменная | Описание |
---|---|
ESIA_CLIENT_ID | идентификатор системы-клиента (мнемоника системы в ЕСИА) |
ESIA_KEYSTORE_ALIAS | алиас ключа и сертификата в контейнере |
ESIA_PRIVATE_KEY_PASSWORD | пароль приватного ключа в контейнере |
Для запуска выполните mvn spring-boot:run
или используйте любой другой способ запуска Spring Boot приложения.
Помните, что для запуска необходима JDK (JRE) с установленным КриптоПро JCP.
После запуска откройте в браузере http://localhost:8080.
Нажмите login with esia
. Пройдите авторизацию (тестовой) записью и подтвердите запрошенные разрешения.
Вы будете перенаправлены обратно на страницу приложения.
При успехе Вы увидите полученный авторизационный код и его содержимое (если это jwt).
При неудаче - сообщение об ошибке и описание ошибки.
- ESIA-007005: The client is not authorized to request an access token using this method.
Вводящая в заблуждение формулировка сообщения об ошибке. Вероятнее всего некорректно сформирован параметр client_secret
.
Возможно, Вы используете незарегистрированный в ЕСИА сертификат или неподдерживаемый алгоритм формирования подписи.
- ESIA-007014: The request doesn`t contain the mandatory parameter [timestamp].
Такое сообщение об ошибке может быть получено, даже если параметр timestamp
в запросе присутствует.
Вероятнее всего, некорректный формат параметра timestamp
. Обратите внимание на url-encoding символов.
Пример корректного параметра timestamp
: timestamp=2021.02.12+00%3A15%3A26+%2B0300
.
- После прохождения авторизации в ЕСИА не происходит возвращение в приложение.
Некорректно сформирован параметр redirect_uri
. Обратите внимание на url-encoding символов.
Пример корректного параметра redirect_uri
: redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fesia_return
.