Photoruction工事中!

Photoructionの開発ブログです!

laravel 11 でauth0 を使ったユーザー認証を実装

はじめに

はじめまして、BPOチームの春冨です。

今回はLaravel 11 で Auth0 を使用したユーザー認証を実装する手順についての記事になります。

その前に、Auth0 を使用した認証フローについて簡単に説明します。

認証フロー

今回は外部 ID プロバイダーとして Google を使用し、Google アカウントでログインするシナリオを想定しています。

  1. ユーザーがシステムにログインリクエストを送信
  2. システムは Auth0 のログイン画面にユーザーをリダイレクト
  3. ユーザーは Auth0 経由で Google に認証情報を送信
  4. Google での認証が成功すると、Auth0 がシステムに認証トークンを返す
  5. システムはトークンをセッションに保存し、ログイン成功ページを表示

これ以降、システムはセッション内の認証トークンを使用して、ユーザーのログイン状態を確認できます。

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 アカウントを使った認証画面が表示されることを確認します。

auth0の認証画面

まとめ

今回、Laravel 11 で Auth0 を使用したユーザー認証を実装しました。

Auth0 を使うことで簡単に外部プロバイダーを介した認証を導入でき、柔軟かつ安全な認証フローを実現できます。

株式会社フォトラクションでは一緒に働く仲間を募集しています