Skip to main content
@auth0/auth0-express SDK を使用するこの Quickstart の新しい Beta バージョンが利用可能です。まもなくこのガイドに代わる予定です。Beta Quickstart を試す →

AI を使って Auth0 を統合する

Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使用している場合は、agent skills を使って数分で Auth0 認証を自動的に追加できます。インストール:
次に、AI アシスタントに以下のように依頼します:
AI アシスタントが自動的に Auth0 アプリケーションを作成し、資格情報を取得して、express-openid-connect をインストールし、ミドルウェアを設定し、ルートをセットアップします。agent skills の完全なドキュメント →
前提条件: 開始する前に、以下がインストールされていることを確認してください。
  • Node.js 18 LTS 以降
  • npm 10+ または yarn 1.22+
  • jq - Auth0 CLI の設定に必要 (任意)
Express のバージョン互換性: この Quickstart は Express 4.17.0 以降で動作します。

はじめに

このガイドでは、express-openid-connect SDK を使用して Express.js の Web アプリケーションに Auth0 を統合し、認証を追加して、ユーザープロファイル情報を表示する方法を紹介します。

1. 新しいプロジェクトを作成する

Expressアプリケーション用の新しいディレクトリを作成し、Node.jsのプロジェクトを初期化します。
プロジェクトの構成を作成します:

2. Auth0 Express SDKをインストールする

環境変数を管理するため、Express と dotenv と一緒に express-openid-connect をインストールします。
開発時には、ファイル変更時にサーバーを自動的に再起動できるよう、nodemon をインストールします:
package.json を更新して、start スクリプトを追加します。 📁 package.json

3. Auth0 App を設定する

次に、Auth0 テナントに新しいアプリケーションを作成し、環境変数をプロジェクトに追加します。 CLI コマンドを実行して Auth0 アプリを自動的に設定することも、Auth0 Dashboard から手動で設定することもできます。
次のシェルコマンドをプロジェクトのルートディレクトリで実行すると、Auth0 アプリケーションが作成され、.env ファイルが生成されます。
このコマンドは次の操作を行います。
  1. 認証済みかどうかを確認します (必要に応じてログインを求められます)
  2. http://localhost:3000 用に設定された Auth0 従来型Webアプリケーションを作成します
  3. ISSUER_BASE_URLCLIENT_IDSECRETBASE_URL を含む .env ファイルを生成します

4. ミドルウェアを設定する

Auth0 のミドルウェアを Express アプリケーションに追加します。auth() ミドルウェアはセッション管理を行い、/login/logout/callback のルートを自動的に作成します。 📁 index.js
この設定でできること:
  • authRequired: false により、認証済み・未認証を問わず、どちらのユーザーもデフォルトでルートにアクセスできます
  • auth0Logout: true により、ユーザーはアプリだけでなく Auth0 からもログアウトされます
  • ミドルウェアにより、/login/logout/callback のルートが自動的に提供されます
  • ユーザーセッションは暗号化された Cookie に保存されます

5. ログイン、ログアウト、プロファイルのルートを作成する

次に、ログイン/ログアウト用のリンクと、認証が必要なプロファイルページを表示するルートを追加します。 📁 index.js
要点:
  • requiresAuth() ミドルウェアは /profile ルートを保護し、未認証のユーザーはログイン画面にリダイレクトされます
  • req.oidc.user には、認証済みユーザーのプロファイル情報が含まれます
  • req.oidc.isAuthenticated() は、ログイン状態を示す真偽値を返します
  • Login ルートと logout ルート (/login, /logout) は、auth() ミドルウェアによって自動的に作成されます

6. アプリを実行する

開発サーバーを起動します:
ブラウザーで http://localhost:3000 を開きます。
チェックポイントこれで、完全に機能する Auth0 のログインページが使えるようになっているはずです。次のように動作します。
  1. “Login” をクリックする - Auth0 の Universal Login ページにリダイレクトされます
  2. 認証を完了する - アプリにリダイレクトされます
  3. “/profile” にアクセスする - ユーザー情報が表示されます
  4. “Logout” をクリックする - アプリと Auth0 の両方からログアウトされます

高度な使い方

認証が必要な各ルートを保護するには、requiresAuth() ミドルウェアを使用します。
Express Router を使って、特定のパス配下にあるすべてのルートを保護することもできます:
外部APIの呼び出しにアクセストークンが必要な場合は、SDKを設定してアクセストークンを要求するようにします。📁 index.js (更新後の設定)
以下を.envファイルに追加してください:
次に、アクセストークンを使って API を呼び出します:
リフレッシュトークンを取得するには、スコープに offline_access を追加します。
ユーザーのクレーム (ロール、権限など) に基づいてルートを保護する:
role のようなクレームは、Auth0 ルールまたは Actions を使用してトークンに追加する必要があります。カスタムクレームの追加方法について詳しくはこちら
本番環境や複数のサーバーインスタンスで運用する場合は、独自のセッションストアを使用してください。
カスタムセッションストアを使用するケース:
  • 複数のサーバーインスタンスを運用している場合 (負荷分散)
  • セッションデータがCookieのサイズ制限 (約4KB) を超える場合
  • サーバーの再起動後もセッションを保持する必要がある場合
  • バックチャネルログアウトを使用する場合
認証エラーに対する適切なエラーハンドリングを追加します:

トラブルシューティング

ログイン後に「Invalid state」エラーが発生する

問題: 認証リクエストとコールバックの間で state が一致していません。解決策:
  1. 本番環境では HTTPS を使用していることを確認します
  2. Cookie が正しく設定されていることを確認します (ブラウザーでブロックされていないこと)
  3. Auth0 Dashboard でコールバック URL が完全に一致していることを確認します

「req.oidc is undefined」

問題: req.oidc にアクセスする前に auth() ミドルウェアが適用されていません。解決策: req.oidc にアクセスするルートより前で app.use(auth(config)) が呼び出されていることを確認します。
問題: ユーザーのセッションデータが Cookie のサイズ制限を超えています。解決策: Redis のようなカスタムセッションストアを使用します。

Callback URL の不一致

問題: Auth0 から「Callback URL mismatch」エラーが返されます。解決策:
  1. Auth0 Dashboard → アプリケーション → あなたのアプリ → 設定 に移動します
  2. http://localhost:3000 (または本番環境の URL) を Allowed Callback URLs に追加します
  3. URL は 完全に 一致している必要があります (末尾のスラッシュを含む)

環境変数が読み込まれない

問題: 設定値が undefined になっています。解決策:
  1. require('dotenv').config() がエントリーファイルの先頭にあることを確認します
  2. .env ファイルがルートディレクトリにあることを確認します
  3. 変数名にタイプミスがないか確認します

次のステップ

認証が機能するようになったので、次の内容もぜひご確認ください。

リソース