Giter Site home page Giter Site logo

esia's Introduction

Единая система идентификации и аутентификации (ЕСИА) OpenId

Build Status

Описание

Компонент для авторизации на портале "Госуслуги".

Внимание!

Получив токен вы можете выполнять любые API запросы. Библиотека не поддерживает все существующие методы в API, а предоставляет только самые базовые. Основная цель библиотеки - получение токена.

Установка

При помощи composer:

composer require --prefer-dist fr05t1k/esia

Или добавьте в composer.json

"fr05t1k/esia" : "^2.0"

Как использовать

Пример получения ссылки для авторизации

<?php 
$config = new \Esia\Config([
  'clientId' => 'INSP03211',
  'redirectUrl' => 'http://my-site.com/response.php',
  'portalUrl' => 'https://esia-portal1.test.gosuslugi.ru/',
  'scope' => ['fullname', 'birthdate'],
]);
$esia = new \Esia\OpenId($config);
$esia->setSigner(new \Esia\Signer\SignerPKCS7(
    'my-site.com.pem',
    'my-site.com.pem',
    'password',
    '/tmp'
));
?>

<a href="<?=$esia->buildUrl()?>">Войти через портал госуслуги</a>

После редиректа на ваш redirectUrl вы получите в $_GET['code'] код для получения токена

Пример получения токена и информации о пользователе

$esia = new \Esia\OpenId($config);

// Вы можете использовать токен в дальнейшем вместе с oid 
$token = $esia->getToken($_GET['code']);

$personInfo = $esia->getPersonInfo();
$addressInfo = $esia->getAddressInfo();
$contactInfo = $esia->getContactInfo();
$documentInfo = $esia->getDocInfo();

Конфиг

clientId - ID вашего приложения.

redirectUrl - URL куда будет перенаправлен ответ с кодом.

portalUrl - по умолчанию: https://esia-portal1.test.gosuslugi.ru/. Домен портала для авторизация (только домен).

codeUrlPath - по умолчанию: aas/oauth2/ac. URL для получения кода.

tokenUrlPath - по умолчанию: aas/oauth2/te. URL для получение токена.

scope - по умолчанию: fullname birthdate gender email mobile id_doc snils inn. Запрашиваемые права у пользователя.

privateKeyPath - путь до приватного ключа.

privateKeyPassword - пароль от приватного ключа.

certPath - путь до сертификата.

tmpPath - путь до дериктории где будет проходить подпись (должна быть доступна для записи).

Токен и oid

Токен - jwt токен которые вы получаете от ЕСИА для дальнейшего взаимодействия

oid - уникальный идентификатор владельца токена

Как получить oid?

Если 2 способа:

  1. oid содержится в jwt токене, расшифровав его
  2. После получения токена oid сохраняется в config и получить можно так
$esia->getConfig()->getOid();

Переиспользование Токена

Дополнительно укажите токен и идентификатор в конфиге

$config->setToken($jwt);
$config->setOid($oid);

esia's People

Contributors

dependabot[bot] avatar f0rt04ka avatar fr05t1k avatar kozzy911 avatar lex111 avatar opiy-org avatar paulish avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esia's Issues

C подключением Вашей авторизации через ЕСИА к сайту (стрящемуся) на Yii Framework сможете помочь?

Здравствуйте!
Строим новый личный кабинет, решили делать на Yii Framework.
Есть пример авторизации через соц.сети по OpenId и EAuth. И есть Ваша авторизация. Пытаюсь из Вашей авторизации на том примере сделать, и не хватает знаний и навыков...
Сможете помочь?

Данные организаций

Как получить данные организаций пользователя? После того как они перестали приходить с общей информацией о пользователе никак не могу понять как получить список организаций к которым пользователь привязан.

Установка ключа ГОСТ 2012

Добрый день!
Подскажите пожалуйста, не могу подключить ключ для модуля авторизации.
До этого использовали сертификат RSA, с недавнего времени он перестал работать и нам было необходимо выполнить переход на ГОСТ 2012. Обновили Ваш модуль до последней версии.
Но возникла проблема с подключением нового ключа.
Когда был сертификат RSA использовали в конфиге:
'@certPath' => 'C:...\cert.cer',
'@privateKeyPath' => 'C:...\key '
cert.cer содержал -----BEGIN/END CERTIFICATE-----
А key содержал -----BEGIN/END ENCRYPTED PRIVATE KEY-----
Сейчас мы с помощью "OpenSSL 1.1.1g + gost engine + get-cpcert" из нашего сертификата ГОСТ 2012 получили файл ".PEM":
из него мы извлекли ".CER" содержащий -----BEGIN/END CERTIFICATE-----
и незашифрованный закрытый ключ содержащий -----BEGIN/END PRIVATE KEY-----.
Собственно вопрос, каким образом нам подключить наш private key или каким алгоритмом его необходимо зашифровать, чтобы он соответствовал требованиям Вашего модуля авторизации?
Спасибо.

Верификация маркера доступа (токена)

Доброго времени суток. Я в качестве примера смотрел проект, реализованный на php и использующий вашу библиотеку для взаимодействия с ЕСИА. Там не было проверки токена, который приходит из ЕСИА в обмен на код авторизации. Покопавшись в самих исходниках библиотеки я не нашёл функции проверки. В методических рекомендациях говорится о такой проверке и как она происходит, ссылаясь на документы и на то, как это должно быть реализовано с точки зрения шифрования. Можете обосновать эту ситуацию?

Log

Здравствуйте, не подскажите как настроить вывод в свой log ошибок?

Ошибка Trying to get property of non-object

Спасибо за модуль авторизации в ЕСИА. Однако у меня возникли проблемы при получении профиля пользователя.
Авторизация прошла успешно, вернулся на redirectUrl . Попытался выполнить следующий код:

    $esia->getToken($_GET['code']);
    $personInfo = $esia->getPersonInfo();
    var_dump($personInfo);

Однако получил следующее:

Notice: Trying to get property of non-object in /var/www/html/includes/Esia/vendor/fr05t1k/esia/src/OpenId.php on line 171

Notice: Undefined offset: 1 in /var/www/html/includes/Esia/vendor/fr05t1k/esia/src/OpenId.php on line 175

Notice: Trying to get property of non-object in /var/www/html/includes/Esia/vendor/fr05t1k/esia/src/OpenId.php on line 176

Fatal error: Uncaught exception 'esia\exceptions\RequestFailException' with message 'Token is empty. Please set the token before' in /var/www/html/includes/Esia/vendor/fr05t1k/esia/src/OpenId.php:346
Stack trace:
#0 /var/www/html/includes/Esia/vendor/fr05t1k/esia/src/OpenId.php(264): esia\OpenId->buildRequest()
#1 /var/www/html/test.php(25): esia\OpenId->getPersonInfo()
#2 {main}
  thrown in /var/www/html/includes/Esia/vendor/fr05t1k/esia/src/OpenId.php on line 346

Пытался разобраться сам, но не понимаю, куда копать.
Не подскажешь, в чем я ошибся?
Заранее благодарю

getToken

после строки $result = curl_exec($curl);
пустой $result, при том что запрос вроде полноценный (ниже представлен)
не подскажете, что может быть?
https://esia-portal1.test.gosuslugi.ru/aas/oauth2/te?client_id=GATI001&code=eyJhbGciOiJSUzI1NiIsInNidCI6ImF1dGhvcml6YXRpb25fY29kZSIsInR5cCI6IkpXVCIsInZlciI6MX0.eyJhdXRoX3RpbWUiOjE0OTk3Nzk0NDQ4NDIsImF1dGhfbXRoZCI6IlBXRCIsImV4cCI6MTUwMTI3OTI4NDYxNiwic2NvcGUiOiJmdWxsbmFtZT9vaWQ9MTAwMDI5OTY1NSBzbmlscz9vaWQ9MTAwMDI5OTY1NSIsImlzcyI6Imh0dHA6XC9cL2VzaWEuZ29zdXNsdWdpLnJ1XC8iLCJuYmYiOjE0OTk3Nzk0NDUsInVybjplc2lhOmNsaWVudDpzdGF0ZSI6IjZkMzVlOWE1LWE4YTQtNDhhNS1hYTQzLTI5M2MwNDc1MDdlOSIsInVybjplc2lhOnNpZCI6IjI1NmFiMDljNTRmNjEwZjc4NTNmN2VhNWM5MzEyNDZmMzUzMzM0MzU2YTk3OTM0OWYxZWJlNmZhYzk2ZWFlZmQiLCJwYXJhbXMiOnt9LCJ1cm46ZXNpYTpzYmoiOnsidXJuOmVzaWE6c2JqOmVpZCI6NzQxNDU2MywidXJuOmVzaWE6c2JqOm5hbSI6Ik9JRC4xMDAwMjk5NjU1IiwidXJuOmVzaWE6c2JqOm9pZCI6MTAwMDI5OTY1NSwidXJuOmVzaWE6c2JqOnR5cCI6IlAiLCJ1cm46ZXNpYTpzYmo6aXNfdHJ1Ijp0cnVlfSwiY2xpZW50X2lkIjoiR0FUSTAwMSIsImlhdCI6MTQ5OTc3OTQ0NX0.Osh3u90bwPuN_zCXDQjRTdpqIYeG_-j2hvjc2MLaxlhESOgJWUt9HygoiYaRyi6ND0GbO0rn7L_MYvmshTlLnyywoAjL6k1h5lU0siVwOVhZsFMFFIV2dYZJVD3m1-8RgA3WzeXXW08DdeFuRDVCGFBaXvBojaVSokQx-a43zfvFse9p7aF4ESH5uRvOlXz4rX4pz_S7GwXGgQyvEUxUS2nLKEV4gvmnW9NJppv9E9xunuR72zOYHW3rIzPQQfeUJ5BVGC5HRw83cRMiqaNJg7zERlF89POVIAvX_5PWWk2OZv5mH5g0Dji6imQ6LMtp49QUuNW8_rS-q_MfwuOA-A&grant_type=authorization_code&client_secret=MIIF0gYJKoZIhvcNAQcCoIIFwzCCBb8CAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHAaCCA1swggNXMIICP6ADAgECAgQmjJ5-MA0GCSqGSIb3DQEBBQUAMFwxCzAJBgNVBAYTAlJVMQ0wCwYDVQQIEwRTLVBiMQ0wCwYDVQQHEwRTLVBiMQ0wCwYDVQQKEwRHQVRJMQ0wCwYDVQQLEwRHQVRJMREwDwYDVQQDEwhBSVMgR0FUSTAeFw0xNzAxMjcwODEyMzZaFw00NjA4MjMwODEyMzZaMFwxCzAJBgNVBAYTAlJVMQ0wCwYDVQQIEwRTLVBiMQ0wCwYDVQQHEwRTLVBiMQ0wCwYDVQQKEwRHQVRJMQ0wCwYDVQQLEwRHQVRJMREwDwYDVQQDEwhBSVMgR0FUSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIfFHJHmzFKOZyjKh9NQOmh25GElafIBEjDyeeXiXbTR_M-yW5Bv8zEG7-Sg4SOPFGSxgKQXfMQFkKb51jCVa_NN-Y-6fW_65BqT5wKbSOM6Z78NSEbOVv4c_tRmt3vIDV76vJ44lvHoOIKSf-kokak9rcwcE9DNrMhPmIIDjnwJ7sCxSOu2x5iy1dCF4TYAJVJ7CRocYVBNfxs75n0WL7nfSBWOObSXsOD2TO-K7aW99JX3bpVUx7HxP7WEikCKXKRQ5ZmRxANQ76UeZKMKYjtwqCA_Z1T7pzGmhKCZHcPa-_veTqZariUCTU8zNTL5ngznfva9O3l5gYHbpDITKfsCAwEAAaMhMB8wHQYDVR0OBBYEFHE2F1QH7sCFJ_knFRhuDRHigcYjMA0GCSqGSIb3DQEBBQUAA4IBAQAmBQ04opj0YB34w6JrMspnDGm32uKmaLuCOwDFT__YgzZgs1Lr0r-Wl4F1Po3Osppg_ork5tNiP0DZtlbOT4N54U3cT7B5VyV5Q4mRVdD9KOPXKj3L15XVnH1egQxCfY3OGxlHyLYEDBxZfr8LPw239st2VF8BAowk9FWhYx7czEx_YgXDFMjZEWDTWKIOZqFbjeGtIosHV82rwLGQFwcNGq1pMKLF4CDxpaGmKHeD4VI9s6iWt10njhTUW_SobE1w0zIREereQLsMZRK321H02Ss5ZFTb_tzWsp1hzEQ3EugnyyPMe2rCVHUwVQp_pRe3W0AZhYW1xoUTE2HyLr3SMYICPzCCAjsCAQEwZDBcMQswCQYDVQQGEwJSVTENMAsGA1UECBMEUy1QYjENMAsGA1UEBxMEUy1QYjENMAsGA1UEChMER0FUSTENMAsGA1UECxMER0FUSTERMA8GA1UEAxMIQUlTIEdBVEkCBCaMnn4wCQYFKw4DAhoFAKCBsTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xNzA3MTExNDA4MjhaMCMGCSqGSIb3DQEJBDEWBBQOrhXB2MhOu_tvyOVDq1JYHDnX6DBSBgkqhkiG9w0BCQ8xRTBDMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDANBgkqhkiG9w0BAQEFAASCAQA6V_tqmTjam6efcaoCHjABfX5Rk2biEdbwtwIHchfSHIpOfarzWx0XnjTeE2FFgnu0l5va2TYqE_sXux_8B8jxj2xl33AZlEXznkiFFukujVHZ22DaGInVFy5T-bH1e7Rogx6d4DkV49P1C2f7sRctzGigvD4Wu4pTiApodwcJKItpEgRxIM6gzDkIAc0itPzSUCZqr3QXPWhkM_VNy_ipr17TB6u0XYQTo4COFMJDGUX--n9xceKD-xDszkuUD5wkii31BZgWzguAETQg5rD2wbcA512C-EnraitwIH0wCVyAA2ReVskWFzJl8IVWrExp3JP3_sjVnuK1D9hTUqAw&state=cba22643-fe8c-4901-9f69-79f5524dd1c4&redirect_uri=http%3A%2F%2F127.0.0.1%2Fesia%2Fresponse.php&scope=fullname+snils&timestamp=2017.07.11+18%3A08%3A28+%2B0400&token_type=Bearer&refresh_token=cba22643-fe8c-4901-9f69-79f5524dd1c411

Warning: openssl_pkcs7_sign(): key type not supported in this PHP build! - но всё работает

Добрый день.

PHP 7.3.19
fr05t1k/esia 2.3.1

Так как используемый нами фреймворк конвертит ворнинги в эксепшны, крашимся в SignerPKCS7 на этой строке:

$signResult = openssl_pkcs7_sign(
     $messageFile,
     $signFile,
     $cert,
     $privateKey,
     []
);

с сообщением
Warning: openssl_pkcs7_sign(): key type not supported in this PHP build!
Используем нешифрованный приватный ключ.

Приходится оборачивать buildUrl() такими некрасивыми вещами:

$oldErrorReportingLevel = error_reporting(E_ERROR | E_PARSE);
$url = $this->esia->buildUrl();        
error_reporting($oldErrorReportingLevel);

Таким образом всё великолепно работает.

Возможно ли как-то обработать этот ворнинг на уровне вашей библиотеки?

Планируется ли добавление поддержки работы с гостовыми сертификатами?

Предполагается, что первом квартале 2020 года ЕСИА перейдёт на использование ГОСТовой подписи с использованием сертификатов, выданных сертифицированными УЦ. Планируются ли доработки по этому поводу? Чтобы можно было использовать гостовые серты и подключать (например через cli) вызов команд по сертифицированных приложений. И если планируется, то что это будет?

getToken "валится" без ошибки

Добрый день!
Пытаюсь подключить сайт к авторизации. Формирование ссылки, авторизация и возврат получились (правда, пришлось чуть-чуть поменять код). Дальше пытаюсь получить данные, не получается. PHP-скрипт буквально останавливается на вызове (определил "методом тыка эхом")
$esia->getToken($_GET['code']);
А конкретно, в getToken() на вызове
$result = json_decode($result);
Никаких ошибок не возвращается, в логи веб-сервера (access log / error log) тоже ничего не попадает...
Подскажите, пожалуйста, в какую сторону "копать"?

Функция uniqid() возвращает не уникальные значения

Файл OpenId.php
Строки 216, 217

$messageFile = $this->tmpPath . DIRECTORY_SEPARATOR . uniqid();
$signFile = $this->tmpPath . DIRECTORY_SEPARATOR . uniqid();

У меня на php 5.6 функция uniqid() возвращает одинаковые значения для обоих вызовов.
Это вызывает ошибку в строке 245
unlink($messageFile);
т.к. файл с таким именем уже удален предыдущей командой.

Если идти пошагово дебаггером, значения возвращаемые uniqid() отличаются.
Видимо при работе без дебаггера не успевает поменяться системное время.
Надо или добавить паузу между вызовами, или использовать другой генератор стучайных строк

Сгененрированая подпись не проходит в ГосУслугах

Данная функция:
$signResult = openssl_pkcs7_sign( $messageFile, $signFile, $cert, $privateKey, [] );
Кладёт в файл $signFile ключ, который не принимается ЕСИА (естественно я применял urlSafe() и выкладывал подпись в одну строку).
Возможно на момент написания Вашего скрипта, всё работало, но, видимо что-то изменилось с тех пор.
Перепробовал всяческие флаги данной функции, но ЕСИА упорно не хочет принимать подпись, выдавая OAuthErrorEnum.noGrants.
Есть ли у Вас рецепт от данной напасти?

Авторизация перестала работать

Добрый день!
На тестовой среде авторизация стала выдавать ошибку Trying to get property of non-object
строка 171 скрипт /vendor/fr05t1k/esia/src/OpenId.php

Мой стек вызова:

...
$esia = new TrfOpenId($config);
            $code = $session->get('esia_code');

            $esia->getToken($code);
            if (!$esia) $this->redirect($esia->getUrl());

До if() уже не доходит.
Никак понять не могу - у меня что-то где-то поломалось или на ГосУслугах опять что-то в тихую поменяли ((
Авторизовываться пытаюсь с 1-м тестовым пользователем, по СНИЛС 000-000-600 01 и 4-м, по СНИЛС 000-000-600 04

Не могли бы Вы у себя проверить, все ли в порядке?

Генерация ключевого контейнера и сертификата ключа

Добрый день, Стас.
Столкнулся с внедрением интеграции авторизации через ЕСИА, но не могу найти как сгенерировать ключ через keytool. Вариантов запуска в сети просто море. Какой нужен для ЕСИА непонятно. В документации тоже только общие слова.
Подскажите пожалуйста командную строку для генерации

Валидация JWT от ESIA

Подскажите , где взять открытый ключ/сертификат , с помощью которого необходим проверять access_marker в виде JWT ?
Что он действительно пришел с ЕСИА

[Esia\Exceptions\RequestFailException]

Доброго времени суток, получаю ответ от ЕСИА, с code, но потовы вылетает такая ошибка, в заранее спасибо)
Request is failed (0)
/home/bitrix/www/local/php_interface/vendor/fr05t1k/esia/src/Esia/OpenId.php:330
#0: Esia\OpenId->sendRequest(object)
/home/bitrix/www/local/php_interface/vendor/fr05t1k/esia/src/Esia/OpenId.php:177
#1: Esia\OpenId->getToken(string)
/home/bitrix/www/esia/finish/index.php:30

Работа с обновленным API ЕСИА. v2/ac, v3/te и client_certificate_hash

Цитирую письмо, которое получили в апреле:

В связи с обновлением API ЕСИА (Методические рекомендации по эксплуатации ЕСИА версия 2.90) и введением в промышленную эксплуатацию сервисов для получения авторизационного кода (v2/ac) и получения маркера идентификации (v3/te) настоятельно рекомендуем обновить интегрированный в вашу систему модуль авторизации через ЕСИА.
Обращаем ваше внимание, что прежние сервисы для получения авторизационного кода (/ac) и получения маркера идентификации (/te) рекомендованы к выводу из эксплуатации. Это означает, что модули не поддерживающие новую версию API со временем станут неработоспособны

Попробовал заменить

'aas/oauth2/te' и 'aas/oauth2/ac'

на

'aas/oauth2/v2/te' и 'aas/oauth2/v2/ac'

через параметры codeUrlPath и tokenUrlPath при передаче в конструктор класса Config.

Получил:

ESIA-007014: The request doesn`t contain the mandatory parameter [client_certificate_hash].

Как я понимаю, фреймворк не заточен на работу с client_certificate_hash.

Более того, интересный факт из спеки:

<client_certificate_hash> - параметр, содержащий хэш сертификата (fingerprint
сертификата) системы-клиента в hex-формате. Используемый для проверки подписи
сертификат должен быть предварительно зарегистрирован в ЕСИА и привязан к УЗ
системы-клиента в ЕСИА. ЕСИА использует сертификаты в формате X.509 и
взаимодействует с алгоритмами формирования электронной подписи ГОСТ Р 34.10-2012
и криптографического хэширования ГОСТ Р 34.11-2012.
Для вычисления значения используется специализированная утилита, доступная по
адресу: http://esia.gosuslugi.ru/public/calc_cert_hash_unix.zip
Источник https://digital.gov.ru/uploaded/presentations/metodicheskie-rekomendatsii-293_0tahAHb.pdf?utm_referrer=https%3a%2f%2fyandex.ru%2f

Подскажите, будет ли как-то допилен фреймворк для работы с новой версией ЕСИА?

response string(5) "array"

Приветствую всех! Подскажите в чем проблема у меня. После получения от ЕСИА $_GET['code'] пробую метод $esia->getPersonInfo() и в ответ получаю string(5) "array". Не пойму где я свернул не туда. Oid и Токен есть.

need help

Добрый день, Никита. Встала задача реализации на сайте авторизаци и через ЕСИА. Восполбзовался вашим репозиторием в качестве образца, все запустилось, но постоянно после перехода по авторизационной ссылке выдает ошибку авториации. Скопировал и проверил все тестовые сертификаты, но результат прежний. Можете ли вы оказать помощь (не безвоздмезную)) ) в настройке системы?
[email protected]
tel/wa/tg +7-953-777-80-21

Вопрос по обработка методов не описанных в готовых обработчиках, на примере «rs/prns/{id}/roles»

Возможно есть решение, но я его не вижу.

Задача: получить список организаций для пользователя, там используется метод «rs/prns/{id}/roles».
В одной из первых версий библиотеки это можно было сделать так:
$esia->getResource('rs/prns/'.$oid.'/roles');

Сейчас, есть готовые методы на подобии getContactInfo() в которых уже и собирается данная строка.
Собрать строку я еще могу используя библиотеку, но вот вызвать метод
sendRequest(new Request('GET', $url))
уже не получается так как у него зона видимости private.
Проблема решилась бы если метод sendRequest() был не private а public, тогда его можно было бы вызвать самому со своим запросом.
то же касается и функции collectArrayElements(), к ней так же невозможно обратиться для сборки своего метода.

Либо, что более правильно, не создавать аналогичные методы на подобии getContactInfo(), getAddressInfo() и т.д
А создать один метод в который нужно передать только(!) данную строку «rs/prns/{id}/roles», да, это не много сложнее чем просто вызвать метод, но так будет более гибко для работы. И еще вариант, можно передавать только последний параметр «roles», либо пусто если он не нужен как к примеру для функции getPersonInfo().

Работа с сертификатом от аккредитованного УЦ

С недавнего времени в технологический портал ЕСИА можно загружать только сертификаты от аккредитованных УЦ.

Как сейчас работать с библиотекой, если в качестве ключа нет привычного .key? Есть или .pfx, или набор из 6 файлов закрытого ключа.

Если указывать путь до .pfx файла, то openssl падает с ошибкой

getPersonInfo() - incorrect PHPDoc

Метод getPersonInfo() якобы @return null|array, но при этом он сам возвращает результат sendRequest(), который может вернуть только array. null здесь лишний.

Совместимость с guzzle http 7

Мы используем php8, и guzzle http 7.0
По зависимостям выпадает следующая ошибка:

- fr05t1k/esia 2.4.0 requires guzzlehttp/guzzle ^6.1.0 -> found guzzlehttp/guzzle[6.1.0, ..., 6.5.x-dev] but it conflicts with your root composer.json require (^7.0.1).
    - fr05t1k/esia 2.4.1 requires psr/log ^1.0 -> found psr/log[1.0.0, ..., 1.1.4] but the package is fixed to 2.0.0 (lock file version)

Могли бы вы разрешить guzzle http 7.0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.