Laravel 用認証 — 2FA、パスキー、JWT セッシ... ノート

Laravel 用認証 — 2FA、パスキー、JWT セッションを備えたヘッドレスマルチガードログイン

Auth for Laravel は、API バックエンドの Laravel アプリケーションにおけるヘッドレスアカウント認証のために設計されたオープンソースパッケージで、カスタム実装によく見られるセキュリティ上の脆弱性に対処します。パスワード、マジックリンク、メールコード、パスキーの 4 つのサインイン方法と、強制登録を含む 2 要素認証のための堅牢なチャレンジエンジンを提供します。このパッケージは、ローテーションするリフレッシュトークンを備えた RS256 アクセストークン、詳細なデバイスセッション管理、登録、招待、メール検証、パスワードリセットなどの機能を提供します。ログインアクティビティログ、スロットリング、新規デバイスアラート、カスタマイズ可能なリスクルールフックが含まれています。Auth for Laravel は、異なるアカウントタイプ(ユーザー、クライアント、スタッフ)ごとに個別のガードをサポートしており、それぞれ独立したモデル、設定、エンドポイント、JWT オーディエンスを備えています。JSON エンドポイントはオプトインであり、ガードごとに設定可能で、すべての状態変更が拡張性のためにイベントをトリガーします。インストールには、いくつかの composer および artisan コマンドが含まれており、必要な設定とマイグレーションが公開され、トラブルシューティングのためのインストールチェッカーが用意されています。開発者は、ガードのモデルに特定の認証コントラクトとトレイトを実装させることで、パッケージを統合します。ログインすると、トークンペアまたは 2 要素認証のチャレンジが返され、TOTP コードやパスキーなどのさまざまな方法で完了できます。このパッケージは、HMAC ハッシュとして保存される使い捨てチャレンジを保証し、検証前にコード試行回数をカウントして、並列推測攻撃を防ぎます。ルート設定は柔軟で、各ガードのプレフィックス、名前、ミドルウェアのカスタマイズが可能で、ルートは対応する機能が有効な場合にのみアクティブになります。Auth for Laravel は、セキュリティのデフォルトを慎重に処理します。未登録のアドレスへのログイン試行は同じ応答を返し、パスワードハッシュの前にスロットリングが発生し、機密性の高いリンク/コードは使い捨てハッシュです。デフォルトでは、パスワード、メール、または 2 要素設定の変更は他のセッションを無効にし、ローテーションされたリフレッシュトークンの再利用はセッション終了とアラートにつながります。テストは実際のガードとトークンチェックをヒットするように設計されており、パッケージはテストでアカウントとして機能するためのヘルパーを提供します。ソーシャルログインと SSO は組み込まれていませんが、既存の SSO コールバックはパッケージの API を介してトークンを発行できます。このパッケージは、PHP ^8.4、Laravel 12 または 13、アトミックロックを備えたキャッシュストア、およびメールトランスポートが必要です。MIT ライセンスで、依存関係は主に Laravel、Symfony、およびその他の Roundly パッケージに限定されています。