はじめに
はじめまして、BPOチームの春冨です。
今回はLaravel 11 で Auth0 を使用したユーザー認証を実装する手順についての記事になります。
その前に、Auth0 を使用した認証フローについて簡単に説明します。
認証フロー
今回は外部 ID プロバイダーとして Google を使用し、Google アカウントでログインするシナリオを想定しています。
- ユーザーがシステムにログインリクエストを送信
- システムは Auth0 のログイン画面にユーザーをリダイレクト
- ユーザーは Auth0 経由で Google に認証情報を送信
- Google での認証が成功すると、Auth0 がシステムに認証トークンを返す
- システムはトークンをセッションに保存し、ログイン成功ページを表示
これ以降、システムはセッション内の認証トークンを使用して、ユーザーのログイン状態を確認できます。
実装手順
ここからは、Laravel プロジェクトに Auth0 を使用した認証を実装する手順を説明します。Auth0 の導入にはauth0/loginライブラリを使用します。バージョンは7.15.0を利用します。
環境
- PHP: 8.2
- laravel: 11.0
- auth0/login: 7.15.0
Auth0 ライブラリの導入と設定ファイルの追加
まず、Composer で Auth0 のライブラリをインストールします。
composer require auth0/login:7.15 --update-with-all-dependencies
以下のコマンドで、config/auth0.php
設定ファイルが作成されます。
php artisan vendor:publish --tag auth0
設定ファイルの詳細はこちらで確認できます。
Auth0 CLI を使ってアプリケーションを登録
Auth0 CLI を使用してアプリケーションを登録します。
ダッシュボードから手動で登録することも可能です。
まず、Auth0 にログインします。
auth0 login
続いて、アプリケーションを作成します。
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
次に、API を登録します。
auth0 apis create \ --name "My Laravel Application API" \ --identifier "https://github.com/auth0/laravel-auth0" \ --offline-access \ --no-input
.env ファイルに必要な値を設定
Auth0 のダッシュボードで作成したアプリケーションと API の情報を確認し、以下の値を .env
ファイルに記載します。
# Auth0 ドメイン (例: tenant.region.auth0.com) AUTH0_DOMAIN=... # クライアントID AUTH0_CLIENT_ID=... # クライアントシークレット AUTH0_CLIENT_SECRET=... # API の識別子 AUTH0_AUDIENCE=...
認証フローの動作確認
実装が完了したら、ログイン URL(デフォルトでは /login
)にアクセスし、Google アカウントを使った認証画面が表示されることを確認します。
まとめ
今回、Laravel 11 で Auth0 を使用したユーザー認証を実装しました。
Auth0 を使うことで簡単に外部プロバイダーを介した認証を導入でき、柔軟かつ安全な認証フローを実現できます。