Подключение к Единой системе идентификации и аутентификации реализуется на основе протокола OAuth 2.0 и его расширения OpenID Connect [1]. Доступ к RESTful веб-сервисам осуществляется при помощи маркеров (токенов) доступа.

Начальные условия
  1. Юридическое лицо должно быть зарегистрировано в системе [2]
  2. Заявка на подключение ИС одобрена, сертификат загружен[3]
  3. Для тестирования используется подтвержденная в тестовой среде учетная запись
Настройка

Подключаем компонент

composer require --prefer-dist fr05t1k/esia

Данный компонент реализует OpenId аутентификацию с подписью запросов посредством OpenSSL, а также доступ к персональным данным.

Предварительная настройка

$config = [
    'clientId' => 'INSP03211', //Мнемоника ИС, которую указывали в заявке
    'redirectUrl' => 'http://my-site.com/response.php', //Ссылка возврата
    'portalUrl' => 'https://esia-portal1.test.gosuslugi.ru/', //Ссылка на тестовый портал, используется в качестве базовой
    'privateKeyPath' => 'my-site.com.pem', //Приватный ключ
    'privateKeyPassword' => 'my-site.com', //Его пароль
    'certPath' => 'my-site.com.pem', //Сертификат
    'tmpPath' => 'tmp', //Временная папка, с правами на запись, используется openssl для подписи
    'scope' => 'openid' //Область доступа, можно указать несколько (через пробел). См. пункт В.4 методических рекомендаций
];

Ссылка перехода в тестовую зону

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

После удачной авторизации в тестовой среде ЕСИА произойдет возврат по указанному адресу с добавленным авторизационным кодом (code). Его нужно использовать для получения маркера доступа.

$esia->getToken($_GET['code']);

Cобственно, всё. Теперь можно (конечно, при указаннии определенных scope) получать персональную информацию пользователей Госусуг.

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

Ссылки:

  1. Wikipepia: OAuth
  2. Минкомсвязь России: Шаги подключения к ЕСИА для упрощённой идентификации клиентов
  3. Минкомсвязь России: Методические рекомендации по использованию Единой системы идентификации и аутентификации (версия 2.23)
  4. Github: fr05t1k/esia
  5. Минкомсвязь России: Единая система идентификации и аутентификации (ЕСИА)
  6. Инструкция по работе с тестовой средой
PS

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

openssl req -new -x509 -days 9999 -nodes -out cert.pem -keyout cert.key

Следующая запись Предыдущая запись