Git Product home page Git Product logo

esia's Introduction

Изменения в форке:

  • обновлен psr/http-client до версии 1.0
  • добавлен метод setRedirectUrl в Esia\Config

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

Build Status

Описание

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

Внимание!

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

Установка

Добавьте в composer.json:

"repositories": [
  {
    "type": "vcs",
    "url": "https://github.com/dark-grey/esia"
  }
],
"dark-grey/esia" : "^2.0"

или

composer require dark-grey/esia

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

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

<?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

fr05t1k avatar kozzy911 avatar lex111 avatar opiy-org avatar paulish avatar

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.