dhaverd/esia

OpenID ESIA 验证

维护者

详细信息

github.com/Nikit/esia

源代码

dev-master 2024-01-16 04:03 UTC

This package is auto-updated.

Last update: 2024-10-03 08:22:57 UTC


README

Build Status

描述

“国家服务”门户的认证组件。

注意!

获取令牌后,您可以执行任何API请求。该库不支持API中的所有现有方法,而只提供最基本的方法。库的主要目的是获取令牌。

安装

使用 composer

composer require --prefer-dist fr05t1k/esia

或者将以下内容添加到 composer.json 中

"fr05t1k/esia" : "^2.0"

如何使用

获取授权链接的示例

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

令牌 - 从 ESIA 获取的 jwt 令牌,用于后续交互

oid - 令牌所有者的唯一标识符

如何获取 oid?

有两种方法

  1. oid 包含在 jwt 令牌中,通过解密它
  2. 获取令牌后,oid 保存到 config 中,可以按如下方式获取
$esia->getConfig()->getOid();

令牌的重用

此外,在配置中指定令牌和标识符

$config->setToken($jwt);
$config->setOid($oid);