Laravelアプリケーションにログインを追加する

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

1

Laravelをインストールする

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?

/

2

SDKをインストールする

プロジェクトディレクトリで次のコマンドを実行して、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?

/

3

SDKを構成する

プロジェクトディレクトリから次のコマンドを実行して、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?

/

4

ログイン経路

SDKは、アプリケーションのユーザーを認証するために必要なすべての経路を自動的に登録します。

**経路** **目的**
/login 認証フローを開始します。
/logout ユーザーをログアウトさせます。
/callback Auth0からのコールバックを処理します。

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

5

アクセス制御

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?

/

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}.");
});;

Was this helpful?

/

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');

Was this helpful?

/

SDKにあるManagement APIの全メソッドについては、こちらにクイックリファレンスガイドがあります。

8

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

Laravelアプリケーションを起動する準備が整いました。要求を受け付けることができます:

php artisan serve

checkpoint.header

ブラウザーを開いて、以下の経路にアクセスしてみてください。

その他の情報

  • ユーザーリポジトリとモデルは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:

Did it work?

Any suggestion or typo?

Edit on GitHub
Sign Up

Sign up for an or to your existing account to integrate directly with your own tenant.