os2web / os2web_key
OS2Web密钥
1.0.0-rc2
2024-05-13 10:18 UTC
Requires
- php: ^8.1
- ext-openssl: *
- drupal/core: ^9 || ^10
- drupal/key: ^1.17
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-16 08:49:12 UTC
README
基于Key模块构建的OS2Web密钥类型和提供者。
OS2Web密钥模块提供两种密钥类型,证书和OpenID Connect (OIDC)。计划两种密钥提供者,Azure Key Vault和Infisical,但尚未实现。
有关如何在Drupal中使用密钥的详细信息,请参阅Key开发者指南。
安装
composer require os2web/os2web_key drush pm:install os2web_key
密钥在/admin/config/system/keys
上管理。
密钥类型
证书
此密钥类型处理带有可选密码(密语)的PKCS 12或Privacy-Enhanced Mail (PEM)证书。
密钥管理
在表单中使用
$form['key'] => [ '#type' => 'key_select', '#key_filters' => [ 'type' => 'os2web_key_certificate', ], ];
KeyHelper
可用于获取实际的证书(部分)
<?php use Drupal\os2web_key\KeyHelper; use Drupal\key\KeyRepositoryInterface; // Use dependency injection for this. /** @var KeyRepositoryInterface $repository */ $repository = \Drupal::service('key.repository'); /** @var KeyHelper $helper */ $helper = \Drupal::service(KeyHelper::class); // Use `drush key:list` to list your keys. $key = $repository->getKey('my_key'); [ // Passwordless certificate. CertificateKeyType::CERT => $certificate, CertificateKeyType::PKEY => $privateKey, ] = $helper->getCertificates($key);
注意:解析的证书没有密码。
OpenID Connect (OIDC)
密钥管理
表单中的示例使用
$form['key'] => [ '#type' => 'key_select', '#key_filters' => [ 'type' => 'os2web_key_oidc, ], ];
获取OIDC配置
<?php use Drupal\key\KeyRepositoryInterface; use Drupal\os2web_key\Plugin\KeyType\OidcKeyType; // Use dependency injection for this. /** @var KeyRepositoryInterface $repository */ $repository = \Drupal::service('key.repository'); $key = $repository->getKey('openid_connect_ad'); [ OidcKeyType::DISCOVERY_URL => $discoveryUrl, OidcKeyType::CLIENT_ID => $clientId, OidcKeyType::CLIENT_SECRET => $clientSecret, ] = $helper->getOidcValues($key);
提供者
Azure Key Vault
@todo
https://azure.microsoft.com/en-us/products/key-vault
Infisical
@todo
https://infisical.com/
编码标准
我们的代码由GitHub Actions检查(参考.github/workflows/pr.yml)。使用以下命令在本地运行检查。
PHP
docker run --rm --volume ${PWD}:/app --workdir /app itkdev/php8.1-fpm composer install # Fix (some) coding standards issues docker run --rm --volume ${PWD}:/app --workdir /app itkdev/php8.1-fpm composer coding-standards-apply # Check that code adheres to the coding standards docker run --rm --volume ${PWD}:/app --workdir /app itkdev/php8.1-fpm composer coding-standards-check
Markdown
docker run --rm --volume $PWD:/md peterdavehello/markdownlint markdownlint --ignore vendor --ignore LICENSE.md '**/*.md' --fix docker run --rm --volume $PWD:/md peterdavehello/markdownlint markdownlint --ignore vendor --ignore LICENSE.md '**/*.md'
代码分析
我们使用PHPStan进行静态代码分析。
在独立的Drupal模块上运行静态代码分析有点棘手,因此我们使用辅助脚本来运行分析
docker run --rm --volume ${PWD}:/app --workdir /app itkdev/php8.1-fpm ./scripts/code-analysis