nora-lib/secure

dev-master 2025-01-02 23:27 UTC

This package is not auto-updated.

Last update: 2025-05-23 23:23:59 UTC


README

インストール

このライブラリはComposerを通じてインストールできます。 以下のコマンドを実行してください。

composer require noralib/secure-time-based-token

特徴

  • RFC 6238 に準拠したTOTPの生成と検証
  • 時間ウィンドウのカスタマイズ設定
  • 任意の桁数やタイムステップ設定のカスタマイズ
  • 簡潔なインターフェース
  • PHPUnitによる包括的なテストスイートを提供

要件

  • PHP 8.3 以上
  • Composer(依存関係を管理するため)

使い方

このライブラリでは、TOTPの生成と検証を簡単に行うことができます。

TOTP生成例

use NoraLib\Secure\TimeBasedToken\TimeBasedToken;

$secret = 'JBSWY3DPEHPK3PXP'; // Base32 形式の秘密鍵
$timeBasedToken = new TimeBasedToken();

$generatedOtp = $timeBasedToken->generateTotp($secret);
echo "Generated OTP: " . $generatedOtp;

TOTP検証例

use NoraLib\Secure\TimeBasedToken\TimeBasedToken;

$secret = 'JBSWY3DPEHPK3PXP'; // Base32 形式の秘密鍵
$providedOtp = '123456'; // ユーザが提供したOTP

$timeBasedToken = new TimeBasedToken();
$isValid = $timeBasedToken->verifyTotp($secret, $providedOtp);

if ($isValid) {
    echo "OTP is valid!";
} else {
    echo "Invalid OTP!";
}

カスタム設定の例

use NoraLib\Secure\TimeBasedToken\TimeBasedToken;

$secret = 'JBSWY3DPEHPK3PXP'; // Base32 形式の秘密鍵
$timeBasedToken = new TimeBasedToken();

// 8桁のOTP、90秒間隔の設定でトークンを生成
$customOtp = $timeBasedToken->generateTotp($secret, time(), 8, 90);

// 検証(8桁、90秒間隔)
$isValid = $timeBasedToken->verifyTotp($secret, $customOtp, 8, 90);

テスト

ライブラリの品質を確認したい場合は、以下のコマンドでテストを実行できます。

  1. 依存関係をインストールします。
composer install
  1. PHPUnitテストを実行します。
vendor/bin/phpunit

または、PHPUnitをグローバルインストールしている場合:

phpunit tests

ライセンス

このプロジェクトは MIT License の下でライセンスされています。

貢献

バグ報告や新機能の提案は GitHub Issues に投稿してください。

  1. このリポジトリをフォークする
  2. 新しいブランチを作成する (git checkout -b feature/your-feature)
  3. コードを実装する
  4. プルリクエストを送信する

注意事項

このライブラリは、ログインや認証機能におけるセキュリティコンポーネントとして設計されていますが、適切に安全性を確認した上で利用してください。