@auth0/auth0-express SDK を使用するこの Quickstart の新しい Beta バージョンが利用可能です。まもなくこのガイドに代わる予定です。Beta Quickstart を試す →AI を使って Auth0 を統合する
AI を使って Auth0 を統合する
Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使用している場合は、agent skills を使って数分で Auth0 認証を自動的に追加できます。インストール:次に、AI アシスタントに以下のように依頼します:AI アシスタントが自動的に Auth0 アプリケーションを作成し、資格情報を取得して、
express-openid-connect をインストールし、ミドルウェアを設定し、ルートをセットアップします。agent skills の完全なドキュメント →はじめに
express-openid-connect SDK を使用して Express.js の Web アプリケーションに Auth0 を統合し、認証を追加して、ユーザープロファイル情報を表示する方法を紹介します。
1. 新しいプロジェクトを作成する
2. Auth0 Express SDKをインストールする
express-openid-connect をインストールします。
package.json を更新して、start スクリプトを追加します。
📁 package.json
3. Auth0 App を設定する
- CLI
- Dashboard
次のシェルコマンドをプロジェクトのルートディレクトリで実行すると、Auth0 アプリケーションが作成され、
.env ファイルが生成されます。このコマンドは次の操作を行います。
- 認証済みかどうかを確認します (必要に応じてログインを求められます)
http://localhost:3000用に設定された Auth0 従来型Webアプリケーションを作成しますISSUER_BASE_URL、CLIENT_ID、SECRET、BASE_URLを含む.envファイルを生成します
4. ミドルウェアを設定する
auth() ミドルウェアはセッション管理を行い、/login、/logout、/callback のルートを自動的に作成します。
📁 index.js
authRequired: falseにより、認証済み・未認証を問わず、どちらのユーザーもデフォルトでルートにアクセスできますauth0Logout: trueにより、ユーザーはアプリだけでなく Auth0 からもログアウトされます- ミドルウェアにより、
/login、/logout、/callbackのルートが自動的に提供されます - ユーザーセッションは暗号化された Cookie に保存されます
5. ログイン、ログアウト、プロファイルのルートを作成する
requiresAuth()ミドルウェアは/profileルートを保護し、未認証のユーザーはログイン画面にリダイレクトされますreq.oidc.userには、認証済みユーザーのプロファイル情報が含まれますreq.oidc.isAuthenticated()は、ログイン状態を示す真偽値を返します- Login ルートと logout ルート (
/login,/logout) は、auth()ミドルウェアによって自動的に作成されます
6. アプリを実行する
チェックポイントこれで、完全に機能する Auth0 のログインページが使えるようになっているはずです。次のように動作します。
- “Login” をクリックする - Auth0 の Universal Login ページにリダイレクトされます
- 認証を完了する - アプリにリダイレクトされます
- “/profile” にアクセスする - ユーザー情報が表示されます
- “Logout” をクリックする - アプリと Auth0 の両方からログアウトされます
高度な使い方
requiresAuth() を使用して特定のルートを保護する
requiresAuth() を使用して特定のルートを保護する
認証が必要な各ルートを保護するには、Express Router を使って、特定のパス配下にあるすべてのルートを保護することもできます:
requiresAuth() ミドルウェアを使用します。アクセストークンによる保護された API の呼び出し
アクセストークンによる保護された API の呼び出し
外部APIの呼び出しにアクセストークンが必要な場合は、SDKを設定してアクセストークンを要求するようにします。📁 index.js (更新後の設定)以下を次に、アクセストークンを使って API を呼び出します:
.envファイルに追加してください:リフレッシュトークンを取得するには、スコープに
offline_access を追加します。カスタムセッションストア (Redis)
カスタムセッションストア (Redis)
本番環境や複数のサーバーインスタンスで運用する場合は、独自のセッションストアを使用してください。カスタムセッションストアを使用するケース:
- 複数のサーバーインスタンスを運用している場合 (負荷分散)
- セッションデータがCookieのサイズ制限 (約4KB) を超える場合
- サーバーの再起動後もセッションを保持する必要がある場合
- バックチャネルログアウトを使用する場合
エラー処理
エラー処理
認証エラーに対する適切なエラーハンドリングを追加します:
トラブルシューティング
よくある問題と解決策
よくある問題と解決策
ログイン後に「Invalid state」エラーが発生する
問題: 認証リクエストとコールバックの間で state が一致していません。解決策:- 本番環境では HTTPS を使用していることを確認します
- Cookie が正しく設定されていることを確認します (ブラウザーでブロックされていないこと)
- Auth0 Dashboard でコールバック URL が完全に一致していることを確認します
「req.oidc is undefined」
問題:req.oidc にアクセスする前に auth() ミドルウェアが適用されていません。解決策: req.oidc にアクセスするルートより前で app.use(auth(config)) が呼び出されていることを確認します。セッションが大きすぎる / Cookie エラー
問題: ユーザーのセッションデータが Cookie のサイズ制限を超えています。解決策: Redis のようなカスタムセッションストアを使用します。Callback URL の不一致
問題: Auth0 から「Callback URL mismatch」エラーが返されます。解決策:- Auth0 Dashboard → アプリケーション → あなたのアプリ → 設定 に移動します
http://localhost:3000(または本番環境の URL) を Allowed Callback URLs に追加します- URL は 完全に 一致している必要があります (末尾のスラッシュを含む)
環境変数が読み込まれない
問題: 設定値がundefined になっています。解決策:require('dotenv').config()がエントリーファイルの先頭にあることを確認します.envファイルがルートディレクトリにあることを確認します- 変数名にタイプミスがないか確認します
次のステップ
- 認可を追加する - ロールベースのアクセス制御を実装する
- 保護された API を呼び出す - アクセストークンを使用してバックエンド API を呼び出す
- Universal Login をカスタマイズする - ログイン画面をブランドに合わせる
- ソーシャル接続を追加する - Google、GitHub、その他のソーシャルログインを有効にする
- MFA を実装する - 多要素認証を追加する
リソース
- express-openid-connect GitHub - ソースコードとサンプル
- API Documentation - API の完全なリファレンス
- Auth0 Express Sample App - 完全なサンプルアプリケーション
- Auth0 Community - Community からサポートを受ける