Laravelアプリケーションにログインを追加する
Auth0のLaravel SDKを使用すると、Laravelアプリケーションに認証、ユーザープロファイル管理、ルーティングに基づくアクセスコントロールを手軽に追加できます。このガイドでは、新規(または既存)のLaravel 9または10アプリケーションにAuth0を統合する方法を説明します。
Laravelアプリケーションをまだセットアップしていない場合には、シェルを開いて、新規プロジェクトに適切なディレクトリに移動し、次のコマンドを実行します:
composer create-project --prefer-dist laravel/laravel auth0-laravel-app ^9.0
Was this helpful?
このガイドにあるすべてのコマンドは、Laravelプロジェクトディレクトリのルートから実行されていることを前提としています。必ず新規プロジェクトのディレクトリに移動(cd
)してください:
cd auth0-laravel-app
Was this helpful?
プロジェクトディレクトリで次のコマンドを実行して、Auth0 Laravel SDKをインストールします:
composer require auth0/login:^7.8 --update-with-all-dependencies
Was this helpful?
そして、アプリケーションにSDK構成ファイルを生成します:
php artisan vendor:publish --tag auth0
Was this helpful?
プロジェクトディレクトリから次のコマンドを実行して、Auth0 CLIをダウンロードします:
curl -sSfL https://raw.githubusercontent.com/auth0/auth0-cli/main/install.sh | sh -s -- -b .
Was this helpful?
そして、Auth0アカウントを使ってCLIを認証し、プロンプトでユーザーとしてログインすることを選択します:
./auth0 login
Was this helpful?
次に、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
Was this helpful?
また、新しい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
Was this helpful?
これで、SDKを構成するプロジェクトディレクトリ内に2つのファイルが作成されます。
これらのファイルには資格情報が保管されているため、機密として扱うことが重要です。必ず、バージョン管理では、これらのファイルをコミットしないようにしてください。Gitを使用している場合は、必ず.gitignore
ファイルに追加します:
echo ".auth0.*.json" >> .gitignore
Was this helpful?
SDKは、アプリケーションのユーザーを認証するために必要なすべての経路を自動的に登録します。
**経路** | **目的** |
---|---|
/login |
認証フローを開始します。 |
/logout |
ユーザーをログアウトさせます。 |
/callback |
Auth0からのコールバックを処理します。 |
これらについて細かな制御が必要な場合や、アプリケーションで既存の経路と競合する場合には、SDKのコントローラーを手動で登録することができます。高度な統合について、SDKのREADMEを参照してください。
Laravelの認証機能は「guards」を使用して、それぞれの要求でユーザーがどのように認証されるのかを定義します。アプリケーションの経路へのアクセスを制約するには、Auth0 SDKの認証ガードを使用することができます。
経路へのアクセスに先だって、ユーザーの認証を要求するには、Laravelのauth
ミドルウェアを使用することができます。
Route::get('/private', function () {
return response('Welcome! You are logged in.');
})->middleware('auth');
Was this helpful?
また、これをLaravelのcan
ミドルウェアと組み合わせると、認証済みのユーザーに特定の権限を要求することができます。
Route::get('/scope', function () {
return response('You have `read:messages` permission, and can therefore access this resource.');
})->middleware('auth')->can('read:messages');
Was this helpful?
認証済みのユーザーについての情報は、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}.");
});;
Was this helpful?
ユーザー情報は、Auth0 Management APIを使用して更新することができます。管理エンドポイントはすべて、SDKのmanagement()
メソッドでアクセスすることができます。
Management APIを呼び出す前に、アプリケーションがManagement APIと通信できるようにしなければなりません。これを実行するには、Auth0 DashboardのAPIページで[Auth0 Management API]
を選択してから[Machine to Machine Applications(M2Mアプリケーション)]タブを選択します。Laravelアプリケーションを認可してから、下矢印をクリックして、付与したいスコープを選択します。
以下の例では、ユーザーのメタデータを更新し、好きな色をランダムに割り当てますが、必ずread:users
とupdate: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');
Was this helpful?
SDKにあるManagement APIの全メソッドについては、こちらにクイックリファレンスガイドがあります。
Laravelアプリケーションを起動する準備が整いました。要求を受け付けることができます:
php artisan serve
checkpoint.header
ブラウザーを開いて、以下の経路にアクセスしてみてください。
http://localhost:8000(パブリックルートを確認する)
http://localhost:8000(パブリックルートを確認する、今回は認証済み)
http://localhost:8000/scope(
read:messages
permissionがあるかを確認する)http://localhost:8000/update(ユーザープロファイルを更新する)
http://localhost:8000/logout(ログアウトする)
その他の情報
ユーザーリポジトリとモデルはAuth0 Laravel SDKを拡張して、カスタムのユーザーモデルを使用し、データベースでユーザーの保管や取得を行う方法を指定することができます。
イベントフックはAuth0 Laravel SDKで発生したイベントを聞く方法を処理して、統合の動作を完全にカスタマイズすることができます。
Management API対応はAuth0 Laravel SDKに組み込まれているため、LaravelアプリケーションからManagement APIと対話することができます。
Next Steps
Excellent work! If you made it this far, you should now have login, logout, and user profile information running in your application.
This concludes our quickstart tutorial, but there is so much more to explore. To learn more about what you can do with Auth0, check out:
- Auth0 Dashboard - Learn how to configure and manage your Auth0 tenant and applications
- laravel-auth0 SDK - Explore the SDK used in this tutorial more fully
- Auth0 Marketplace - Discover integrations you can enable to extend Auth0’s functionality
Sign up for an or to your existing account to integrate directly with your own tenant.