pavelrockjob / esia
该包最新版本(1.0.61)没有可用的许可证信息。
Esia openid 和 auth2 提供商
1.0.61
2022-12-24 10:32 UTC
Requires
- guzzlehttp/guzzle: ^7.0
README
用于连接和使用欧盟服务局的包。
包包含用于操作 API 的基本功能。
连接到欧盟服务局是通过执行开发者要求的。有关将您的系统连接到欧盟服务局的详细信息,请参阅此处: https://partners.gosuslugi.ru/catalog/esia
该包是基于欧盟服务局使用指南实现的 https://digital.gov.ru/uploaded/presentations/metodicheskierekomendatsiipoispolzovaniyuesiav313_VaCOzE9.pdf
注意
向欧盟服务局发送请求需要签名。为了签名请求,需要证书,该证书必须在欧盟服务局预先注册并绑定到客户端系统账户。欧盟服务局使用 X.509 格式证书,并与电子签名形成算法 ГОСТ Р 34.10-2012 和加密哈希算法 ГОСТ Р 34.11-2012 进行交互。
该库不能自行使用 ГОСТ 算法进行签名。为此,需要实现自己的 Signer。
目前,该库仅实现了 api 中的几个个人方法。您可以获取用户及其文档的信息。
安装
composer require "pavelrockjob/esia"
Laravel (发布配置)
php artisan vendor:publish --provider="Pavelrockjob\Esia\Providers\LaravelProvider"
使用库的示例
index.php
//index.php require "vendor/autoload.php"; $provider = new \Pavelrockjob\Esia\EsiaProvider(new \Pavelrockjob\Esia\EsiaConfig([ //Куда отправляем запрос (https://esia-portal1.test.gosuslugi.ru тестовый сервер есиа) 'esiaUrl' => 'https://esia-portal1.test.gosuslugi.ru', //Редирект на страницу после успешной аутентификации 'redirectUrl' => 'http://127.0.0.1/callback.php', //Мнемоника 'clientId' => 'МНЕМОНИКА_ИЗ_ЕСИА', //Доступные скоупы 'scopes' => [\Pavelrockjob\Esia\Enums\EsiaScope::fullname, \Pavelrockjob\Esia\Enums\EsiaScope::openid] ]), //Signer, штука которая умеет шифровать строки по алгоритму ГОСТ Р 34.11-2012 //CustomSigner не будет работать, нужно реализовать метот sign new \Pavelrockjob\Esia\Signers\CustomSigner()); //Получаем ссылку на вход в есиа var_dump($provider->getAuthLink());
callback.php
$provider = new \Pavelrockjob\Esia\EsiaProvider(new \Pavelrockjob\Esia\EsiaConfig([ 'esiaUrl' => 'https://esia-portal1.test.gosuslugi.ru', 'redirectUrl' => 'http://127.0.0.1/callback.php', 'clientId' => 'МНЕМОНИКА_ИЗ_ЕСИА', 'scopes' => [\Pavelrockjob\Esia\Enums\EsiaScope::fullname, \Pavelrockjob\Esia\Enums\EsiaScope::openid] ]), new \Pavelrockjob\Esia\Signers\CustomSigner()); //После успешной авторизации можем обращатся к ESIA для получения доступных данных //Получение OID $provider->getOid() //Пример получения персональной информации о пользователе //Вся доступная информация $personalData = $provider->api()->prns()->get(); //Конкретное поле $personalData->getFirstName() //Персональные документы пользователя $documents = $provider->api()->prns()->docs(); //Существуют магические методы для получения документов $provider->api()->prns()->docs()->getRfPassport();
Laravel
EsiaController::index()
//Установите конфиги в config/esia.php $provider = new EsiaProvider(new EsiaConfig([ //Установите доступные скоупы 'scopes' => [ EsiaScope::openid, EsiaScope::fullname, ], ]), //Signer, штука которая умеет шифровать строки по алгоритму ГОСТ Р 34.11-2012 //CustomSigner не будет работать, нужно реализовать метот sign new \Pavelrockjob\Esia\Signers\CustomSigner()); //Получаем ссылку на вход в есиа dd($provider->getAuthLink());
EsiaController::callback()
$provider = new EsiaProvider(new EsiaConfig([ 'scopes' => [ EsiaScope::openid, EsiaScope::fullname, ], ]), new \Pavelrockjob\Esia\Signers\CustomSigner()); //После успешной авторизации можем обращатся к ESIA для получения доступных данных dd($provider->getOid())
需要Signer的帮助,请通过 Telegram @Milenkij 联系。