定制 belazz/esia-legacy 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

belazz/esia-legacy

Composer 安装命令:

composer require belazz/esia-legacy

包简介

OpenID ESIA authenticating

README 文档

README

Build Status

Описание

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

Этот репозиторий предназначен для проектов с версией php >= 5.5

Для php >= 7.0 используй этот

Основано на этом компоненте.

В этом форке был добавлена возможность обновлять access_token с помощью refresh_token'ов Также при успешной авторизации значения refresh_token и expires_in сохраняются в память - есть возможность сохранить их в БД/сессию и тд

Composer

composer require belazz/esia-legacy

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

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

<?php 
$config = new \Esia\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',
  'scope' => ['fullname', 'birthdate'],
]);
$esia = new \Esia\OpenId($config);
?>

<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();

Обновление токена

    $refreshToken = $config->getRefreshToken(); // для получения сохраненного при реквесте refresh_token'a
    $newAccessToken = $esia->refreshToken($refreshToken); // получение нового access_token'a с помощью refresh_token'a

Получение значения expires_in

Также возвращаемое кол-во секунд expires_in сохраняется в Config $config объект, доступно через:

    $config->getTokenExpiresIn();    

Проверку актуальный ли ещё токен нужно реализовать самому. Например, с использованием Carbon:

    return Carbon::now() < Carbon::now()->addSeconds($config->getTokenExpiresIn());    

expires_in должен быть сохранен в каком-либо хранилище (также как и access_token, refresh_token и oid), соотв. при сравнении забираем его оттуда

Конфиг

token - access_token

refreshToken - refresh_token (нужен для запроса нового access_token без участия пользователя)

tokenExpiresIn - через сколько действие access_token'a закончится, указывается в секундах

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);

统计信息

  • 总下载量: 38
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-02-15

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固