はじめに
@auth0/auth0-express SDK を使用して Express.js Web アプリケーションに Auth0 を統合し、authentication を追加して、ユーザープロファイル情報を表示する方法を説明します。
1
新しいプロジェクトを作成する
Express アプリケーション用の新しいディレクトリを作成し、Node.js プロジェクトを初期化します。
package.json を更新して ES モジュールを使用し、起動スクリプトを追加します。2
SDK をインストールする
@auth0/auth0-express、express、dotenv をインストールします。3
Auth0 を設定する
Auth0 テナントに新しいアプリケーションを作成し、環境変数を設定します。
- クイックセットアップ
- CLI
- Auth0 Dashboard
アプリケーションを作成したら、以下の値を 出力をコピーして、
.env ファイルに追加します。安全なセッションシークレットを生成します。AUTH0_SESSION_SECRET の値として使用します。macOS または Linux では、
openssl rand -hex 32 も実行できます。Node はすでに前提条件となっているため、この Node コマンドはすべてのプラットフォームで使用できます。4
middleware を設定する
Expressアプリケーションにこの処理で行われること:
createAuth0()ミドルウェアを追加します。SDKによって、/auth/login、/auth/logout、/auth/callback、/auth/backchannel-logoutの各ルートが自動的に設定されます。server.js
createAuth0()は、環境変数 (AUTH0_DOMAIN、AUTH0_CLIENT_IDなど) から資格情報を自動的に読み取ります/auth/配下に4つの認証ルートをマウントします- セッションとトークンにアクセスできるよう、すべてのリクエストに
req.auth0.clientを追加します
5
ログイン、ログアウト、保護されたプロファイルルートを追加
SDK の 要点:
requiresAuth ミドルウェアでルートを保護し、getUser() を使用してユーザープロファイルデータを表示します。server.js
@auth0/auth0-expressのrequiresAuth()はルートを保護し、未認証のユーザーを/auth/loginにリダイレクトしますreq.auth0.client.getUser()は認証済みユーザーのプロファイルを返します- ログインリンクは
/auth/login、ログアウトは/auth/logoutを指し、どちらも自動的にマウントされます
6
アプリケーションを実行する
開発サーバーを起動します:ブラウザで http://localhost:3000 を開きます。
チェックポイントこれで、完全に機能する Auth0 のログインフローが完成しました。以下を行うと:
- Login をクリック — Auth0 の Universal Login ページにリダイレクトされます
- 認証を完了 —
/auth/callbackにあるアプリにリダイレクトされます /profileにアクセス — ユーザー情報が表示されます- Logout をクリック — セッションがクリアされ、Auth0 からログアウトします
高度な使用方法
アクセストークン を使用して保護された API を呼び出す
アクセストークン を使用して保護された API を呼び出す
SDK を 保護された ルート 内で token を取得します。SDK は アクセストークン の有効期限が切れると、自動的に token を refresh します。
audience で設定して API 用の アクセストークン をリクエストし、getAccessToken() で取得します。API の audience を .env に追加します。.env
server.js
returnTo を使用したカスタム login
returnTo を使用したカスタム login
returnTo パラメータを使用して、login 後にユーザーを指定したページへリダイレクトします。server.js
トラブルシューティング
'req.auth0 is undefined'
'req.auth0 is undefined'
原因: ルートハンドラーより前に
createAuth0() ミドルウェアが登録されていません。修正: req.auth0 にアクセスするルートより前に app.use(createAuth0()) を記述してください。コールバック URL の不一致エラー
コールバック URL の不一致エラー
原因: Auth0 アプリケーションの設定で指定したコールバック URL が
http://localhost:3000/auth/callback と一致していません。修正:- Auth0 Dashboard → アプリケーション > アプリケーション → 対象のアプリ → アプリケーション設定 に移動します
- 許可されるコールバック URL に
http://localhost:3000/auth/callbackを追加します - 許可されるログアウト URL に
http://localhost:3000を追加します - 変更を保存 をクリックします
@auth0/auth0-express SDK では /auth/callback を使用します (express-openid-connect で使用する /callback ではありません) 。環境変数が読み込まれない
環境変数が読み込まれない
原因:
dotenv/config がインポートされていないか、.env ファイルに必要な値が設定されていません。修正:- エントリーファイルの先頭に
import 'dotenv/config'(またはrequire('dotenv').config()) を記述してください .envに必要な 5 つの変数 (AUTH0_DOMAIN、AUTH0_CLIENT_ID、AUTH0_CLIENT_SECRET、APP_BASE_URL、AUTH0_SESSION_SECRET) がすべて含まれていることを確認します- 不足している値をデバッグします:
ログイン後の 'Invalid state' エラー
ログイン後の 'Invalid state' エラー
原因: セッション Cookie が正しく設定されていないか、コールバック URL に直接アクセスしています。修正:
APP_BASE_URLがブラウザーでアクセスしている URL (例:http://localhost:3000) と一致していることを確認します- ブラウザーの Cookie を削除して、再試行します
- 本番環境では HTTPS を使用していることを確認します
次のステップ
- Express API を保護する —
@auth0/auth0-express-apiを使用して、API でアクセストークンを検証する - Authorization を追加する — ロールベースのアクセス制御を実装する
- Universal Login をカスタマイズする — ログイン体験をブランドに合わせる
- Social Connections を追加する — Google、GitHub などのソーシャルログインを有効にする
- MFA を実装する — 多要素認証を追加する
リソース
- auth0/auth0-express GitHub — ソースコードとサンプル
- Auth0 Community — コミュニティでサポートを受ける