Skip to main content
このQuickstartは現在Beta版です。ぜひフィードバックをお寄せください!
前提条件: 始める前に、以下がインストールされていることを確認してください。

はじめに

このガイドでは、@auth0/auth0-express SDK を使用して Express.js Web アプリケーションに Auth0 を統合し、authentication を追加して、ユーザープロファイル情報を表示する方法を説明します。
1

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

Express アプリケーション用の新しいディレクトリを作成し、Node.js プロジェクトを初期化します。package.json を更新して ES モジュールを使用し、起動スクリプトを追加します。
2

SDK をインストールする

@auth0/auth0-expressexpressdotenv をインストールします。
3

Auth0 を設定する

Auth0 テナントに新しいアプリケーションを作成し、環境変数を設定します。
アプリケーションを作成したら、以下の値を .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_DOMAINAUTH0_CLIENT_ID など) から資格情報を自動的に読み取ります
  • /auth/ 配下に4つの認証ルートをマウントします
  • セッションとトークンにアクセスできるよう、すべてのリクエストに req.auth0.client を追加します
5

ログイン、ログアウト、保護されたプロファイルルートを追加

SDK の requiresAuth ミドルウェアでルートを保護し、getUser() を使用してユーザープロファイルデータを表示します。
server.js
要点:
  • @auth0/auth0-expressrequiresAuth() はルートを保護し、未認証のユーザーを /auth/login にリダイレクトします
  • req.auth0.client.getUser() は認証済みユーザーのプロファイルを返します
  • ログインリンクは /auth/login、ログアウトは /auth/logout を指し、どちらも自動的にマウントされます
6

アプリケーションを実行する

開発サーバーを起動します:
ブラウザで http://localhost:3000 を開きます。
チェックポイントこれで、完全に機能する Auth0 のログインフローが完成しました。以下を行うと:
  1. Login をクリック — Auth0 の Universal Login ページにリダイレクトされます
  2. 認証を完了 — /auth/callback にあるアプリにリダイレクトされます
  3. /profile にアクセス — ユーザー情報が表示されます
  4. Logout をクリック — セッションがクリアされ、Auth0 からログアウトします

高度な使用方法

SDK を audience で設定して API 用の アクセストークン をリクエストし、getAccessToken() で取得します。API の audience を .env に追加します。
.env
保護された ルート 内で token を取得します。
server.js
SDK は アクセストークン の有効期限が切れると、自動的に token を refresh します。
returnTo パラメータを使用して、login 後にユーザーを指定したページへリダイレクトします。
server.js
セッション を基盤に、独自の authorization ロジックを構築します。
server.js
https://myapp.com/roles claim はデフォルトでは含まれていません。Action を使用して ID トークンに追加し、namespaced claim 名を使用してください。

トラブルシューティング

原因: ルートハンドラーより前に createAuth0() ミドルウェアが登録されていません。修正: req.auth0 にアクセスするルートより前に app.use(createAuth0()) を記述してください。
原因: Auth0 アプリケーションの設定で指定したコールバック URL が http://localhost:3000/auth/callback と一致していません。修正:
  1. Auth0 Dashboardアプリケーション > アプリケーション → 対象のアプリ → アプリケーション設定 に移動します
  2. 許可されるコールバック URLhttp://localhost:3000/auth/callback を追加します
  3. 許可されるログアウト URLhttp://localhost:3000 を追加します
  4. 変更を保存 をクリックします
注: @auth0/auth0-express SDK では /auth/callback を使用します (express-openid-connect で使用する /callback ではありません) 。
原因: dotenv/config がインポートされていないか、.env ファイルに必要な値が設定されていません。修正:
  1. エントリーファイルの先頭に import 'dotenv/config' (または require('dotenv').config()) を記述してください
  2. .env に必要な 5 つの変数 (AUTH0_DOMAINAUTH0_CLIENT_IDAUTH0_CLIENT_SECRETAPP_BASE_URLAUTH0_SESSION_SECRET) がすべて含まれていることを確認します
  3. 不足している値をデバッグします:
原因: セッション Cookie が正しく設定されていないか、コールバック URL に直接アクセスしています。修正:
  1. APP_BASE_URL がブラウザーでアクセスしている URL (例: http://localhost:3000) と一致していることを確認します
  2. ブラウザーの Cookie を削除して、再試行します
  3. 本番環境では HTTPS を使用していることを確認します

次のステップ


リソース