该包最新版本(1.0.61)没有可用的许可证信息。

Esia openid 和 auth2 提供商

1.0.61 2022-12-24 10:32 UTC

This package is auto-updated.

Last update: 2024-08-29 06:13:05 UTC


README

用于连接和使用欧盟服务局的包。

包包含用于操作 API 的基本功能。

连接到欧盟服务局是通过执行开发者要求的。有关将您的系统连接到欧盟服务局的详细信息,请参阅此处: https://partners.gosuslugi.ru/catalog/esia

该包是基于欧盟服务局使用指南实现的 https://digital.gov.ru/uploaded/presentations/metodicheskierekomendatsiipoispolzovaniyuesiav313_VaCOzE9.pdf

注意

向欧盟服务局发送请求需要签名。为了签名请求,需要证书,该证书必须在欧盟服务局预先注册并绑定到客户端系统账户。欧盟服务局使用 X.509 格式证书,并与电子签名形成算法 ГОСТ Р 34.10-2012 和加密哈希算法 ГОСТ Р 34.11-2012 进行交互。

该库不能自行使用 ГОСТ 算法进行签名。为此,需要实现自己的 Signer。

目前,该库仅实现了 api 中的几个个人方法。您可以获取用户及其文档的信息。

安装

composer require "pavelrockjob/esia"

Laravel (发布配置)

php artisan vendor:publish --provider="Pavelrockjob\Esia\Providers\LaravelProvider"

使用库的示例

index.php

//index.php

require "vendor/autoload.php";

$provider = new \Pavelrockjob\Esia\EsiaProvider(new \Pavelrockjob\Esia\EsiaConfig([
    //Куда отправляем запрос (https://esia-portal1.test.gosuslugi.ru тестовый сервер есиа)
    'esiaUrl' => 'https://esia-portal1.test.gosuslugi.ru',
    //Редирект на страницу после успешной аутентификации
    'redirectUrl' => 'http://127.0.0.1/callback.php',
    //Мнемоника
    'clientId' => 'МНЕМОНИКА_ИЗ_ЕСИА',
    //Доступные скоупы
    'scopes' => [\Pavelrockjob\Esia\Enums\EsiaScope::fullname, \Pavelrockjob\Esia\Enums\EsiaScope::openid]
]),
//Signer, штука которая умеет шифровать строки по алгоритму ГОСТ Р 34.11-2012
//CustomSigner не будет работать, нужно реализовать метот sign
new \Pavelrockjob\Esia\Signers\CustomSigner());

//Получаем ссылку на вход в есиа 
var_dump($provider->getAuthLink());

callback.php

$provider = new \Pavelrockjob\Esia\EsiaProvider(new \Pavelrockjob\Esia\EsiaConfig([
    'esiaUrl' => 'https://esia-portal1.test.gosuslugi.ru',
    'redirectUrl' => 'http://127.0.0.1/callback.php',
    'clientId' => 'МНЕМОНИКА_ИЗ_ЕСИА',
    'scopes' => [\Pavelrockjob\Esia\Enums\EsiaScope::fullname, \Pavelrockjob\Esia\Enums\EsiaScope::openid]
]),
new \Pavelrockjob\Esia\Signers\CustomSigner());

//После успешной авторизации можем обращатся к ESIA для получения доступных данных

//Получение OID
$provider->getOid()

//Пример получения персональной информации о пользователе
//Вся доступная информация
$personalData = $provider->api()->prns()->get();
//Конкретное поле
$personalData->getFirstName()

//Персональные документы пользователя
$documents = $provider->api()->prns()->docs();
//Существуют магические методы для получения документов
$provider->api()->prns()->docs()->getRfPassport();

Laravel

EsiaController::index()

//Установите конфиги в config/esia.php
$provider = new EsiaProvider(new EsiaConfig([
            //Установите доступные скоупы
            'scopes' => [
                EsiaScope::openid,
                EsiaScope::fullname,
            ],
        ]), 
        //Signer, штука которая умеет шифровать строки по алгоритму ГОСТ Р 34.11-2012
        //CustomSigner не будет работать, нужно реализовать метот sign
        new \Pavelrockjob\Esia\Signers\CustomSigner());

//Получаем ссылку на вход в есиа 
dd($provider->getAuthLink());

EsiaController::callback()

$provider = new EsiaProvider(new EsiaConfig([
            'scopes' => [
                EsiaScope::openid,
                EsiaScope::fullname,
            ],
        ]), 
        new \Pavelrockjob\Esia\Signers\CustomSigner());

//После успешной авторизации можем обращатся к ESIA для получения доступных данных
dd($provider->getOid())

需要Signer的帮助,请通过 Telegram @Milenkij 联系。