メインコンテンツへスキップ
Auth0のLaravel SDKを使用すると、Laravelアプリケーションに認証、ユーザープロファイル管理、ルーティングに基づくアクセスコントロールを手軽に追加できます。このガイドでは、新規(または既存)のLaravel 9または10アプリケーションにAuth0を統合する方法を説明します。
1

Laravelをインストールする

Laravelアプリケーションをまだセットアップしていない場合 には、シェルを開いて、新規プロジェクトに適切なディレクトリに移動し、次のコマンドを実行します:
composer create-project --prefer-dist laravel/laravel auth0-laravel-app ^9.0
このガイドにあるすべてのコマンドは、Laravelプロジェクトディレクトリのルートから実行されていることを前提としています。必ず新規プロジェクトのディレクトリに移動(cd)してください:
cd auth0-laravel-app
2

SDKをインストールする

プロジェクトディレクトリで次のコマンドを実行して、Auth0 Laravel SDKをインストールします:
composer require auth0/login:^7.8 --update-with-all-dependencies
そして、アプリケーションにSDK構成ファイルを生成します:
php artisan vendor:publish --tag auth0
3

SDKを構成する

プロジェクトディレクトリから次のコマンドを実行して、Auth0 CLIをダウンロードします:
curl -sSfL https://raw.githubusercontent.com/auth0/auth0-cli/main/install.sh | sh -s -- -b .
そして、Auth0アカウントを使ってCLIを認証し、プロンプトでユーザーとしてログインすることを選択します:
./auth0 login
次に、Auth0で新しいアプリケーションを作成します:
./auth0 apps create \
  --name "My Laravel Application" \
  --type "regular" \
  --auth-method "post" \
  --callbacks "http://localhost:8000/callback" \
  --logout-urls "http://localhost:8000" \
  --reveal-secrets \
  --no-input \
  --json > .auth0.app.json
また、新しいAPIも作成します:
./auth0 apis create \
  --name "My Laravel Application's API" \
  --identifier "https://github.com/auth0/laravel-auth0" \
  --offline-access \
  --no-input \
  --json > .auth0.api.json
これで、SDKを構成するプロジェクトディレクトリ内に2つのファイルが作成されます。これらのファイルには資格情報が保管されているため、機密として扱うことが重要です。必ず、バージョン管理では、これらのファイルをコミットしないようにしてください。Gitを使用している場合は、必ず.gitignoreファイルに追加します:
echo ".auth0.*.json" >> .gitignore
4

ログイン経路

SDKは、アプリケーションのユーザーを認証するために必要なすべての経路を自動的に登録します。これらについて細かな制御が必要な場合や、アプリケーションで既存の経路と競合する場合には、SDKのコントローラーを手動で登録することができます。高度な統合について、SDKのREADMEを参照してください。
5

アクセス制御

Laravelの認証機能は「guards」を使用して、それぞれの要求でユーザーがどのように認証されるのかを定義します。アプリケーションの経路へのアクセスを制約するには、Auth0 SDKの認証ガードを使用することができます。経路へのアクセスに先だって、ユーザーの認証を要求するには、Laravelのauthミドルウェアを使用することができます。
Route::get('/private', function () {
  return response('Welcome! You are logged in.');
})->middleware('auth');
また、これをLaravelのcanミドルウェアと組み合わせると、認証済みのユーザーに特定の権限を要求することができます。
Route::get('/scope', function () {
  return response('You have `read:messages` permission, and can therefore access this resource.');

})->middleware('auth')->can('read:messages');
6

ユーザー情報

認証済みのユーザーについての情報は、LaravelのAuthファサードまたはauth()ヘルパー関数を介して利用できます。以下は、ユーザーの識別子とメールアドレスを取得する例です。
Route::get('/', function () {
  if (! auth()->check()) {
  return response('You are not logged in.');

  }
  $user = auth()->user();
  $name = $user->name ?? 'User';
  $email = $user->email ?? '';
  return response("Hello {$name}! Your email address is {$email}.");
});;
7

ユーザー管理

ユーザー情報は、Auth0 Management APIを使用して更新することができます。管理エンドポイントはすべて、SDKのmanagement()メソッドでアクセスすることができます。Management APIを呼び出す前に、アプリケーションがManagement APIと通信できるようにしなければなりません。 これを実行するには、Auth0 DashboardのAPIページ[Auth0 Management API]を選択してから[Machine to Machine Applications(M2Mアプリケーション)]タブを選択します。Laravelアプリケーションを認可してから、下矢印をクリックして、付与したいスコープを選択します。以下の例では、ユーザーのメタデータを更新し、好きな色をランダムに割り当てますが、必ずread:usersupdate:usersのスコープを付与するようにします。APIエンドポイントのリストと必要なスコープについては、Management APIのドキュメントを参照してください。
use Auth0\Laravel\Facade\Auth0;
Route::get('/colors', function () {
$endpoint = Auth0::management()->users();
$colors = ['red', 'blue', 'green', 'black', 'white', 'yellow', 'purple', 'orange', 'pink', 'brown'];
$endpoint->update(
id: auth()->id(),

body: [

    'user_metadata' => [

        'color' => $colors[random_int(0, count($colors) - 1)]

    ]

]

);
$metadata = $endpoint->get(auth()->id());
$metadata = Auth0::json($metadata);
$color = $metadata['user_metadata']['color'] ?? 'unknown';
$name = auth()->user()->name;
return response("Hello {$name}! Your favorite color is {$color}.");
})->middleware('auth');
SDKにあるManagement APIの全メソッドについては、こちらにクイックリファレンスガイドがあります。
8

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

Laravelアプリケーションを起動する準備が整いました。要求を受け付けることができます:
php artisan serve
チェックポイント
ブラウザーを開いて、以下の経路にアクセスしてみてください。

その他の情報

  • ユーザーリポジトリとモデルはAuth0 Laravel SDKを拡張して、カスタムのユーザーモデルを使用し、データベースでユーザーの保管や取得を行う方法を指定することができます。
  • イベントフックはAuth0 Laravel SDKで発生したイベントを聞く方法を処理して、統合の動作を完全にカスタマイズすることができます。
  • Management API対応はAuth0 Laravel SDKに組み込まれているため、LaravelアプリケーションからManagement APIと対話することができます。

次のステップ

成功です!ここまで来れば、アプリケーションにログイン、ログアウト、ユーザープロファイル情報が備わっているはずです。これでクイックスタートチュートリアルは終了ですが、機能はまだまだたくさんあります。Auth0でできることについて詳しくは、以下をご覧ください。
  • Auth0 Dashboard - Auth0のテナントやアプリケーションを構成して管理する方法について説明します
  • laravel-auth0 SDK - このチュートリアルで使用されているSDKをより詳しく説明します
  • Auth0 Marketplace - Auth0の機能性を拡張できる各種の統合を見つけられます
I