メインコンテンツへスキップ

AI を使って Auth0 を統合する

Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使用している場合は、agent skills を使って、数分で Auth0 認証を自動的に追加できます。インストール:
npx skills add auth0/agent-skills --skill auth0-quickstart --skill auth0-laravel
次に、AI アシスタントに以下のように依頼します。
Add Auth0 authentication to my Laravel app
AI アシスタントが、Auth0 アプリケーションの作成、認証情報の取得、auth0/login のインストール、環境変数の設定、認証ルートの登録を自動的に行います。agent skills の完全なドキュメント →
前提条件: 開始する前に、以下がインストールされていることを確認してください。インストールを確認するには、次を実行します: php --version && composer --version

はじめに

このクイックスタートでは、Laravel アプリケーションに Auth0 の認証を追加する方法を説明します。Auth0 Laravel SDK を使用して、安全なログイン、ログアウト、保護されたルート、ユーザープロファイルへのアクセスを設定します。
1

新しいLaravelプロジェクトを作成

すでに Laravel アプリケーションがある場合は、ステップ 2 に進みます。新しい Laravel プロジェクトを作成します。
composer create-project laravel/laravel auth0-laravel-app
プロジェクトディレクトリを開きます:
cd auth0-laravel-app
2

Auth0 Laravel SDKをインストールする

プロジェクトディレクトリで次のコマンドを実行して、Auth0 Laravel SDKをインストールします。
composer require auth0/login:^7 --update-with-all-dependencies
次に、SDK の設定ファイルを公開します。
php artisan vendor:publish --tag auth0
3

Auth0の認証情報を設定する

Auth0 アプリケーションを作成し、認証情報をプロジェクトに追加する必要があります。次のいずれかの方法を選択してください。
Auth0 アプリを作成し、適切な設定値があらかじめ入力された .env 用の認証情報をコピーします。これらの値をプロジェクトの .env ファイルに追加します。
4

認証用ルートを追加する

Auth0 SDK は、アプリケーションに対して次のルートを自動的に登録します。追加のルート設定は不要です。
RoutePurpose
/loginAuth0 のログインフローを開始します
/logoutユーザーをログアウトし、Auth0 にリダイレクトします
/callbackAuth0 の認証コールバックを処理します
アプリケーションで Laravel Breeze、Fortify、または Jetstream を使用している場合、SDK の /login/logout/callback ルートが、それらのパッケージによって登録されたルートと競合する可能性があります。ルートを手動で登録する手順については、SDK README を参照してください。
routes/web.php を更新して、ホームルートを追加します。
routes/web.php
<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    if (! auth()->check()) {
        return response('You are not logged in. <a href="/login">Log in</a>');
    }

    $user = auth()->user();
    $name = $user->name ?? 'User';
    $email = $user->email ?? '';

    return response("Hello {$name}! Your email address is {$email}.");
});
5

ミドルウェアを使用してルートを保護する

Laravel の auth ミドルウェアを使用すると、任意のルートで認証を必須にできます。can ミドルウェアを使用して、特定の権限を必須にすることもできます。
routes/web.php
<?php

use Illuminate\Support\Facades\Route;

// 認証済みユーザーであれば誰でもアクセス可能
Route::get('/private', function () {
    return response('Welcome! You are logged in.');
})->middleware('auth');

// 認証済みであり、かつ 'read:messages' 権限が必要
Route::get('/scope', function () {
    return response('You have the read:messages permission.');
})->middleware('auth')->can('read:messages');
権限は Auth0 API の設定で定義され、ロールを通じてユーザーに割り当てられます。詳しくは、ロールベースのアクセス制御を参照してください。
6

アプリケーションを実行する

php artisan serve
アプリケーションは http://localhost:8000 で実行されます。ポート 8000 がすでに使用されている場合は、php artisan serve --port=8001 を実行し、新しいポートを使用するように Auth0 アプリケーションの Allowed Callback URLsAllowed Logout URLs を更新してください。
チェックポイントブラウザーで http://localhost:8000 を開きます。次のルートにアクセスして、統合が正しく機能していることを確認してください。

トラブルシューティング

原因: Auth0 に送信されたコールバック URL が、アプリケーションの Allowed Callback URLs リスト内のどの URL とも一致していません。対処方法:
  1. Auth0 DashboardApplications > Applications → 対象のアプリ → Settings に移動します
  2. Allowed Callback URLshttp://localhost:8000/callback を追加します
  3. Save Changes をクリックします
末尾にスラッシュが付いていないこと、およびポート番号が実行中のサーバーと一致していることを確認してください。
原因: セッションまたは Cookie の設定に問題があります。Laravel セッションで、ログイン リダイレクトからコールバックまでの間の state が保持されていません。対処方法:
  1. .envSESSION_DRIVERfiledatabase、または redis に設定されていることを確認します (array は使用しないでください)
  2. 設定とキャッシュをクリアします:
php artisan config:clear && php artisan cache:clear
  1. 開発サーバーを再起動します
原因: SDK が Auth0 の認証情報を見つけられません。対処方法: プロジェクトのルート ディレクトリに、次のいずれかが存在することを確認してください。
  • AUTH0_DOMAINAUTH0_CLIENT_IDAUTH0_CLIENT_SECRET を含む .env ファイル
  • Auth0 CLI が生成した .auth0.app.json ファイル
.env を更新したら、設定キャッシュをクリアします:
php artisan config:clear
原因: SDK のルートが登録されていません。通常は、サービスプロバイダーが読み込まれていないことが原因です。対処方法:
  1. php artisan vendor:publish --tag auth0 を実行済みであることを確認します
  2. パッケージの自動検出が有効になっていることを確認します (composer.json"dont-discover": [] を確認してください)
  3. php artisan route:list | grep auth0 を実行して、ルートが登録されていることを確認します
  4. ルートが見つからない場合は、サービスプロバイダーを手動で登録します。Laravel 11 以降では、bootstrap/providers.php に追加します:
bootstrap/providers.php
return [
    App\Providers\AppServiceProvider::class,
    Auth0\Laravel\Auth0ServiceProvider::class,
];

高度な使い方

Auth0 Management API を使用してユーザー情報を更新できます。すべての Management API エンドポイントには、SDK の Auth0::management() メソッドからアクセスできます。Management API を呼び出す前に、アプリケーションに Management API へのアクセス権を付与してください。
  1. Auth0 DashboardApplications > APIsAuth0 Management API に移動します
  2. Machine to Machine Applications タブを選択します
  3. Laravel アプリケーションを認可し、read:usersupdate:users スコープを付与します
routes/web.php
<?php

use Auth0\Laravel\Facade\Auth0;
use Illuminate\Support\Facades\Route;

Route::get('/colors', function () {
    $colors = ['red', 'blue', 'green', 'black', 'white', 'yellow', 'purple', 'orange'];

    $users = Auth0::management()->users();

    // 認証済みユーザーのメタデータをランダムなお気に入りの色で更新する
    $users->update(
        id: auth()->id(),
        body: [
            'user_metadata' => [
                'color' => $colors[random_int(0, count($colors) - 1)],
            ],
        ]
    );

    // 更新後のメタデータを取得して表示する
    $metadata = Auth0::json($users->get(auth()->id()));
    $color = $metadata['user_metadata']['color'] ?? 'unknown';
    $name = auth()->user()->name;

    return response("Hello {$name}! Your favorite color is {$color}.");
})->middleware('auth');
すべての Management API メソッドの完全なリファレンスは、SDK ドキュメントで確認できます。
SDK はカスタムユーザーモデルとリポジトリをサポートしており、Auth0 を IDプロバイダーとして維持しながら、独自のデータベースでユーザーを保存および取得できます。実装ガイド全体については、User Repositories and Models を参照してください。
SDK は認証ライフサイクルの要所でイベントを発生させます。ログイン、ログアウト、トークン更新時などのイベントを利用して、SDK のコアコードを変更することなく動作を柔軟にカスタマイズできます。イベントの一覧と実装例については、Hooking Events を参照してください。
Auth0 RBAC を使用してロール経由でユーザーに権限を割り当て、can ミドルウェアを使って Laravel でそれを適用します。
routes/web.php
<?php

use Illuminate\Support\Facades\Route;

Route::get('/admin', function () {
    return response('Admin area.');
})->middleware('auth')->can('admin:dashboard');
RBAC を設定するには、次の手順を実行します。
  1. Auth0 DashboardApplications > APIs → 対象の API → Permissions に移動します
  2. アプリケーションに必要な権限 (例: admin:dashboardread:messages) を追加します
  3. User Management > Roles に移動し、ロールを作成して権限を割り当てます
  4. ユーザープロフィールページからロールを割り当てます
詳細なガイドについては、Role-Based Access Control を参照してください。

次のステップ

Laravel アプリケーションで認証が動作するようになったので、Auth0 のその他の機能も確認してみましょう。