setasign / setapdf-signer-addon-azure-keyvault
A SetaPDF-Signer 组件的签名模块,用于 Azure KeyVault。
v2.0.0
2023-03-15 14:30 UTC
Requires
- php: >=7.1
- ext-json: *
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- setasign/setapdf-signer: ^2.40
Requires (Dev)
- guzzlehttp/guzzle: ^6.5
- http-interop/http-factory-guzzle: ^1.0
- mjelamanov/psr18-guzzle: ^1.3
- phpseclib/phpseclib: ^2.0
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 组件
- PSR-7 接口
- PSR-17 接口
- PSR-18 接口
- PSR-7 实现,如 Guzzle PSR-7
- PSR-17 实现,如 HTTP Factory for Guzzle
- PSR-18 实现,如 Guzzle(版本 6 需要一个 附加包装器)
确保 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许可证授权。