Модуль есиа php

README

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

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

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

Composer

composer require belazz/esia-legacy

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

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

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

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

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

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

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 токен которые вы получаете от ЕСИА для дальнейшего взаимодействия

Читайте также:  Что за пособие матерям одиночкам новое с 1 июля

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

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

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

  • oid содержится в jwt токене, расшифровав его
  • После получения токена oid сохраняется в config и получить можно так

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

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

//$scope = ‘openid’;
‘openid fullname usr_org email’
//$scope = ‘fullname’;
//$scope = ‘usr_org’;
‘Y.m.d H:i:s O’

// encrypt it

//*****************файл funcfunc20171012.php (общие процедуры функции)***************

//************************************************ЗАПРОС НА все нужные СКОУПы *****************************************

//$scope = ‘openid’;
‘openid fullname usr_org email’
//$scope = ‘fullname’;
//$scope = ‘usr_org’;
//$scope = ‘snils’;
‘Y.m.d H:i:s O’

// Убираем последний символ & из строки $post_data_text

//’Accept-Encoding: gzip, deflate’,

// Создание общего запроса (заголовки и тело запроса)
// chr(13).chr(10) равно ”
” – перевод каретки

// Открытие сокета

//есть настройка в php.ini max_execution_time

// -2 to remove the ”
” before the next chunk

// проверка полученного ответа

//**********закомментировать н ******************

//**********закомментировать кон ******************

//****************************************получение полного имени пользователя ********************************

//****************************************получение email пользователя (1. доступ к перечню контактов “ctts” 2. получение контактов)********************************

“GET $path HTTP/1.1

“Authorization: Bearer ”

;

//*************************scope openid fullname usr_org email****************************************************************************************
//ПОЛУЧЕНИЕ ИНФОРМАЦИИ ПО ОРГАНИЗАЦИЯМ , В КОТОРЫХ СОСТОИТ ПОЛЬЗОВАТЕЛЬ

Оцените статью