mcpField
L
laravel-auth

laravel-auth

github.com/fusengine開発3467 回インストール2 週間前に更新
リポジトリ

laravel-auth について

Laravel プロジェクト向けの認証・認可スキルで、Laravel 13 の一般的な認証方式、セキュリティ機能、アクセス制御を扱います。モジュール型の FuseCore プロジェクト向け統合パターンも紹介します。

主な機能

  1. 01Sanctum、Passport、Fortify を解説
  2. 02Socialite とスターターキットを網羅
  3. 03ポリシー、ゲート、トークン権限を説明
  4. 04認証確認、パスワード再設定、セッションを網羅
  5. 05FuseCore モジュール統合パターンを提供

活用シーン

  1. 01API のトークン認証方式を選定
  2. 02SPA やカスタム UI の認証を設定
  3. 03ソーシャルログインとパスワード再設定を実装
  4. 04FuseCore モジュール間の認可を適用

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/fusengine/agents --skill laravel-auth

インストール後、Claude Code で/laravel-authを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
authentication.md
authorization.md
csrf.md
encryption.md
fortify.md
hashing.md
passport.md
passwords.md
sanctum.md
session.md
socialite.md
starter-kits.md
verification.md
references/templates/
FortifySetup.php.md
GatesAndPolicies.php.md
LoginController.php.md
PassportSetup.php.md
PasswordResetController.php.md
PostPolicy.php.md
sanctum-setup.md
SocialiteController.php.md

詳細

Laravel 13 の認証・認可エコシステムを網羅しています。Sanctum (API トークン、SPA 認証)、Passport(OAuth2 サーバー)、Fortify(カスタム UI に対応したヘッドレス認証)、Socialite(ソーシャルログイン)、スターターキット、ポリシーとゲート、 メール認証、パスワードリセット、セッション管理、CSRF / PreventRequestForgery、暗号化、ハッシュ化を扱います。認証の FuseCore モジュラープロジェクト統合パターン(User モジュール、ポリシーによるモジュール間認可)も含みます。

Laravel の認証と認可

エージェントのワークフロー(必須)

実装を始める前に、必ず 3 つのエージェントを並行して起動してください。それぞれ name を指定して Agent を 1 回呼び出します。

  1. fuse-ai-pilot:explore-codebase - 既存の認証設定、ガード、ポリシーを確認します
  2. fuse-ai-pilot:research-expert - Context7 を使用して最新の Laravel 13 認証ドキュメントを確認します
  3. mcp__context7__query-docs - 特定のパターン(Sanctum、Passport など)を照会します

実装後、検証のために fuse-ai-pilot:sniper を実行してください。


概要

Laravel は、認証と認可の包括的なエコシステムを提供します。ニーズに応じて選択してください。

パッケージ最適な用途複雑さ
スターターキット新規プロジェクト、迅速なセットアップ低
SanctumAPI トークン、SPA 認証低
Fortifyカスタム UI、ヘッドレスバックエンド中
PassportOAuth2 サーバー、サードパーティーアクセス高
Socialiteソーシャルログイン(Google、GitHub)低

重要なルール

  1. モデルの認可にはポリシーを使用する - インラインの if チェックは使用しません
  2. パスワードは必ずハッシュ化する - Hash::make() または 'hashed' キャストを使用します
  3. ログイン後にセッションを再生成する - セッション固定攻撃を防ぎます
  4. 本番環境では HTTPS を使用する - セキュア Cookie に必須です
  5. トークンの権限を定義する - 最小権限の原則に従います

アーキテクチャ

app/
├── Http/
│   ├── Controllers/
│   │   └── Auth/              ← Auth controllers (if manual)
│   └── Middleware/
│       └── Authenticate.php   ← Redirects unauthenticated
├── Models/
│   └── User.php               ← HasApiTokens trait (Sanctum)
├── Policies/                  ← Authorization policies
│   └── PostPolicy.php
├── Providers/
│   └── AppServiceProvider.php ← Gate definitions
└── Actions/
    └── Fortify/               ← Fortify actions (if used)
        ├── CreateNewUser.php
        └── ResetUserPassword.php

config/
├── auth.php                   ← Guards & providers
├── sanctum.php                ← API token config
└── fortify.php                ← Fortify features

FuseCore との統合

FuseCore プロジェクトで作業する場合、認証はモジュール構造に従います。

FuseCore/
├── Core/                      # Infrastructure (priority 0)
│   └── App/Contracts/
│       └── AuthServiceInterface.php  ← Auth contract
│
├── User/                      # Auth module (existing)
│   ├── App/
│   │   ├── Models/User.php    ← HasApiTokens trait
│   │   ├── Http/
│   │   │   ├── Controllers/
│   │   │   │   ├── AuthController.php
│   │   │   │   └── TokenController.php
│   │   │   ├── Requests/
│   │   │   │   ├── LoginRequest.php
│   │   │   │   └── RegisterRequest.php
│   │   │   └── Resources/UserResource.php
│   │   ├── Policies/UserPolicy.php
│   │   └── Services/AuthService.php
│   ├── Config/
│   │   └── sanctum.php        ← Sanctum config (module-level)
│   ├── Database/Migrations/
│   ├── Routes/api.php         ← Auth routes
│   └── module.json            # dependencies: []
│
└── {YourModule}/              # Depends on User module
    ├── App/Policies/          ← Module-specific policies
    └── module.json            # dependencies: ["User"]
FuseCore 認証チェックリスト
  • 認証コードは /FuseCore/User/ モジュールに配置する
  • ポリシーはモジュールの /App/Policies/ に配置する
  • 認証ルートは /FuseCore/User/Routes/api.php に配置する
  • Sanctum の設定は /FuseCore/User/Config/sanctum.php に配置する
  • 他のモジュールの module.json に "User" 依存関係を宣言する
  • モジュールのルートで auth:sanctum ミドルウェアを使用する
モジュール間認可
// In FuseCore/{Module}/Routes/api.php
Route::middleware(['api', 'auth:sanctum'])->group(function () {
    Route::apiResource('posts', PostController::class);
});

// In FuseCore/{Module}/App/Http/Controllers/PostController.php
public function update(UpdatePostRequest $request, Post $post)
{
    $this->authorize('update', $post);  // Uses PostPolicy
    // ...
}

→ モジュールのパターン全体については、fusecore skill を参照してください。


選択ガイド

認証方式
Need auth scaffolding? → Starter Kit
├── Yes → Use React/Vue/Livewire starter kit
└── No → Building custom frontend?
    ├── Yes → Use Fortify (headless)
    └── No → API only?
        ├── Yes → Sanctum (tokens)
        └── No → Session-based
トークンの種類
Third-party apps need access? → Passport (OAuth2)
├── No → Mobile app?
│   ├── Yes → Sanctum API tokens
│   └── No → SPA on same domain?
│       ├── Yes → Sanctum SPA auth (cookies)
│       └── No → Sanctum API tokens

主な概念

概念説明参照先
ガードユーザーの認証方法(セッション、トークン)を定義しますauthentication.md
プロバイダーユーザーの取得元(データベース)を定義しますauthentication.md
ゲート単純なチェックに使うクロージャーベースの認可ですauthorization.md
ポリシーモデルに関連付けられたクラスベースの認可ですauthorization.md
権限トークンの権限(Sanctum/Passport のスコープ)ですsanctum.md

リファレンスガイド

概念(理由とアーキテクチャ)
トピックリファレンス参照するタイミング
認証authentication.mdガード、プロバイダー、ログインフロー
認可authorization.mdゲートとポリシー、アクセス制御
Sanctumsanctum.mdAPI トークン、SPA 認証
Passportpassport.mdOAuth2 サーバー、サードパーティーアクセス
Fortifyfortify.mdヘッドレス認証、2FA
Socialitesocialite.mdソーシャルログインプロバイダー
スターターキットstarter-kits.md認証のスキャフォールディング
メール認証verification.mdMustVerifyEmail、verified ミドルウェア
パスワードリセットpasswords.mdパスワードを忘れた場合のフロー
セッションsession.mdセッションドライバー、フラッシュデータ
CSRFcsrf.mdフォーム保護、AJAX トークン
暗号化encryption.mdデータの暗号化(パスワードを除く)
ハッシュ化hashing.mdパスワードのハッシュ化
テンプレート(完全なコード)
テンプレート使用する場面
LoginController.php.md手動で認証コントローラーを作成する場合
GatesAndPolicies.php.mdゲートとポリシーの例
PostPolicy.php.mdbefore フィルターを含む完全なポリシークラス
sanctum-setup.mdSanctum の設定とテスト
PassportSetup.php.mdOAuth2 サーバーのセットアップ
FortifySetup.php.mdFortify の設定と 2FA
SocialiteController.php.mdソーシャルログインとテスト
PasswordResetController.php.mdパスワードリセットのフロー

ベストプラクティス

DO
  • 新しいプロジェクトではスターターキットを使用する
  • すべてのモデルにポリシーを定義する
  • トークンの有効期限を設定する
  • ログイン試行をレート制限する
  • 機密性の高い操作には verified ミドルウェアを使用する
  • 期限切れのトークンを定期的に削除する
DON'T
  • 平文のパスワードを保存しない
  • ログイン時のセッション再生成を省略しない
  • Sanctum で十分な場合に Passport を使用しない
  • 期限切れのトークンの削除を忘れない
  • 本番環境で HTTPS を無視しない
  • 認可ロジックをコントローラーに記述しない

Laravel 13 に関する注意事項

PreventRequestForgery(旧 VerifyCsrfToken)

Laravel 13 では VerifyCsrfToken の名前が PreventRequestForgery に変更されます。このミドルウェアは、Sec-Fetch-Site ヘッダーを使ったオリジンチェックを追加し、ステートフルルートでのクロスオリジン CSRF 攻撃をブロックします。オリジンチェックに失敗した場合は、CSRF トークンを使用します。

// bootstrap/app.php
->withMiddleware(function (Middleware $middleware) {
    $middleware->preventRequestForgery(except: ['stripe/*', 'webhook/*']);
    // $middleware->preventRequestForgery(originOnly: true);    // no token fallback
    // $middleware->preventRequestForgery(allowSameSite: true); // accept same-site
})
  • すべての VerifyCsrfToken::class の参照を PreventRequestForgery::class に移行します(VerifyCsrfToken/ValidateCsrfToken は非推奨のエイリアスとして引き続き使用できます)
  • 除外:preventRequestForgery(except: [...])
  • ステートレス API(Sanctum トークン)には影響しません

コメント