os2web/os2web_key

OS2Web密钥

安装: 119

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 1

开放问题: 1

类型:drupal-module

1.0.0-rc2 2024-05-13 10:18 UTC

This package is not auto-updated.

Last update: 2024-09-16 08:49:12 UTC


README

基于Key模块构建的OS2Web密钥类型和提供者。

OS2Web密钥模块提供两种密钥类型证书OpenID Connect (OIDC)。计划两种密钥提供者Azure Key VaultInfisical,但尚未实现。

有关如何在Drupal中使用密钥的详细信息,请参阅Key开发者指南

安装

composer require os2web/os2web_key
drush pm:install os2web_key

密钥在/admin/config/system/keys上管理。

密钥类型

证书

此密钥类型处理带有可选密码(密语)的PKCS 12Privacy-Enhanced Mail (PEM)证书。

密钥管理

"Certificate" key type form

在表单中使用

$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)

密钥管理

"OpenID Connect (OIDC)" key type form

表单中的示例使用

$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