setasign/setapdf-signer-addon-azure-keyvault

A SetaPDF-Signer 组件的签名模块,用于 Azure KeyVault。

v2.0.0 2023-03-15 14:30 UTC

This package is auto-updated.

Last update: 2024-09-06 14:29:55 UTC


README

本软件包提供了一个用于 SetaPDF-Signer 组件的模块,允许您使用 Azure Key Vault(由 Microsoft 提供)通过纯 PHP 对 PDF 文档进行数字签名。

需求

使用此软件包需要 Azure Key Vault 服务凭据。

本软件包在 PHP >= 7.1 上开发和测试。有关 SetaPDF-Signer 组件的要求,请参阅此处

我们使用 PSR-17 (HTTP Factories)PSR-18 (HTTP Client) 进行请求。因此,您需要实现这些接口。我们建议使用 Guzzle。

对于 PHP 7.1

    "require" : {
        "guzzlehttp/guzzle": "^6.5",
        "http-interop/http-factory-guzzle": "^1.0",
        "mjelamanov/psr18-guzzle": "^1.3"
    }

对于 >= PHP 7.2

    "require" : {
        "guzzlehttp/guzzle": "^7.0",
        "http-interop/http-factory-guzzle": "^1.0"
    }

安装

将以下内容添加到您的 composer.json 中

{
    "require": {
        "setasign/setapdf-signer-addon-azure-keyvault": "^2.0"
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://www.setasign.com/downloads/"
        }
    ]
}

然后执行 composer update。您需要定义 repository 来评估对 SetaPDF-Signer 组件的依赖关系(有关更多详细信息,请参阅 此处)。

不使用 Composer

建议使用 composer,否则您需要手动解决依赖关系树。您将需要

确保 SetaPDF-Signer 组件 已安装,并且其 自动加载器 已正确注册。

然后只需要求 src/autoload.php 文件或在您的自己的 PSR-4 兼容自动加载实现中注册此软件包

$loader = new \Example\Psr4AutoloaderClass;
$loader->register();
$loader->addNamespace('setasign\SetaPDF\Signer\Module\AzureKeyVault', 'path/to/src/');

用法

本软件包中的所有类都位于命名空间 setasign\SetaPDF\Signer\Module\AzureKeyVault 中。

Module

这是主签名模块,可用于与 SetaPDF-Signer 组件一起使用。其构造函数需要 6 个参数

  • $vaultBaseUrl 您密钥库的基本 URL。
  • $certificateName 您密钥的名称。
  • $certificateVersion 您密钥的版本。
  • $httpClient PSR-18 HTTP 客户端实现。
  • $requestFactory PSR-17 HTTP 工厂实现。
  • $streamFactory PSR-17 HTTP 工厂实现。

一个简单的完整签名过程看起来是这样的

$httpClient = new GuzzleHttp\Client([
    'http_errors' => false,
    //'verify' => './cacert.pem'
]);
// if you are using php 7.1
//$httpClient = new Mjelamanov\GuzzlePsr18\Client($httpClient);

$azureModule = new setasign\SetaPDF\Signer\Module\AzureKeyVault\Module(
    $vaultBaseUrl,
    $certificateName,
    $certificateVersion,
    $httpClient,
    new Http\Factory\Guzzle\RequestFactory(),
    new Http\Factory\Guzzle\StreamFactory()
);

$token = $azureModule->createTokenBySharedSecret($tenantId, $appClientId, $appClientSecret);
$azureModule->setAccessToken($token['accessToken']);

// the file to sign
$fileToSign = __DIR__ . '/Laboratory-Report.pdf';

// create a writer instance
$writer = new SetaPDF_Core_Writer_File('signed.pdf');
// create the document instance
$document = SetaPDF_Core_Document::loadByFilename($fileToSign, $writer);

// create the signer instance
$signer = new SetaPDF_Signer($document);
$azureModule->setSignatureAlgorithm($alg);
$signer->sign($azureModule);

许可证

此软件包是开源软件,根据MIT许可证授权。