ilimurzin / esia
Пакет для входа через Госуслуги
4.0.0
2025-02-24 08:26 UTC
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.0
- psr/http-client: ^1.0
- psr/http-message: ^2.0
- psr/log: ^3.0
Requires (Dev)
- codeception/codeception: ^5.1.2
- codeception/module-asserts: ^3.0.0
- ergebnis/composer-normalize: ^2.45
- friendsofphp/php-cs-fixer: ^3.67
- phpstan/phpstan: ^2.1
- roave/security-advisories: dev-latest
- webmasterskaya/crypto-pro-php-stubs: dev-for-ilimurzin-esia
This package is auto-updated.
Last update: 2025-03-24 09:00:34 UTC
README
Пакет для входа через Госуслуги. Поддерживается в двух версиях: 3.x и 4.x. Пакет версии 3.x обратно совместим с fr05t1k/esia 2.4. Пакет версии 4.x несовместим с предыдущими версиями, но поддерживает новые эндпоинты ЕСИА: v2/ac и v3/te.
4.x
Установка
composer require ilimurzin/esia
Использование
Пакет использует модель контроля на основе делегированного принятия решения. Подробнее в методических рекомендациях.
$config = new \Esia\Config( clientId: 'FJ-VOLGA', clientCertificateHash: 'CD6EA35843FDE0212F301509EDD5B51BA7C954782FA4DE0608550A7FB35D80EE', redirectUrl: 'http://localhost/response.php', portalUrl: 'https://esia-portal1.test.gosuslugi.ru/', scopes: ['fullname', 'email'], ); $esia = new \Esia\Esia( $config, new \Esia\Signer\CliCryptoProSigner( 'HDIMAGE\\\\3f452f01.000\\241C', '1234567890', '/opt/cprocsp/bin/csptest' ) ); // state нужно сгенерировать и сохранить в сессию $state = '7648d7bd-6369-4073-b545-90250f68025e'; $url = $esia->buildUrl($state); // Пользователь переходит по url // После авторизации ЕСИА возвращает пользователя на redirectUrl с параметрами code и state // state нужно сравнить со значением, сохраненным в сессию // Получение маркера доступа в обмен на авторизационный код $token = $esia->getToken($code); // Пакет предоставляет только методы для получения маркера доступа. // Запрос за данными пользователя при необходимости можно сформировать самостоятельно. // Полученный маркер доступа передается в запросы за данными в заголовке Authorization, пример: // $request->withHeader('Authorization', 'Bearer ' . $token->accessToken); // Для запроса за данными пользователя также потребуется oid $oid = $token->getOid(); // Получение нового маркера доступа в обмен на маркер обновления $token = $esia->refreshToken($token->refreshToken);
Отличия от 2.4
- Поддержка новых эндпоинтов ЕСИА: v2/ac и v3/te.
- Все объекты иммутабельные, метод получения токена возвращает объект со всеми данными, а не только маркер доступа.
- Обязательная передача стейта в метод формирования ссылки и возможность передать дополнительные параметры (например, person_filter).
- Сигнеры КриптоПро: через приложение командной строки
csptest
или через расширение для PHP. - Отсутствуют методы для получения данных пользователя.
- Метод для получения маркера доступа в обмен на маркер обновления.
3.x
Отличия от 2.4
- Возможность передать стейт и дополнительные параметры (например, person_filter) в метод формирования ссылки.
- Сигнеры КриптоПро (через приложение командной строки или через расширение для PHP).
- Метод для получения ролей пользователя.
- Метод для получения маркера доступа в обмен на маркер обновления.
- Метод для получения маркера доступа на основе полномочий системы-клиента.
- Метод для получения организаций пользователя.
Совместимость
Пакет версии 3.x совместим с fr05t1k/esia 2.4.
Для перехода на форк можно выполнить команды:
composer remove fr05t1k/esia composer require ilimurzin/esia:^3.2
При этом уже написанный код не сломается.