AI を使用して Auth0 を統合する
AI を使用して Auth0 を統合する
Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使用している場合は、agent skills を使って、数分で Auth0 API の認証を自動的に追加できます。インストール:次に、AI アシスタントに以下のように依頼します。AI アシスタントは、Auth0 API を自動的に作成し、認証情報を取得して、
express-oauth2-jwt-bearer をインストールし、JWT ミドルウェアを設定したうえで、トークン検証によって API エンドポイントを保護します。agent skills の完全なドキュメント →はじめに
Auth0 API をセットアップする
次に、Auth0 テナントに新しい API を作成し、環境変数をプロジェクトに追加します。Auth0 API の設定方法は 2 つあります。CLI コマンドを使う方法と、Dashboard から手動で設定する方法です。
- CLI
- Dashboard
Auth0 API を作成するには、プロジェクトのルートディレクトリで次のコマンドを実行します。作成後、Identifier と Domain の値をコピーし、
このコマンドで次の処理が実行されます。
- 認証済みかどうかを確認します (必要に応じてログインを求めます)
- 指定した識別子で Auth0 API を作成します
- ドメインや識別子を含む API の詳細を表示します
.env ファイルを作成します。.env
YOUR_AUTH0_DOMAIN は Auth0 テナントのドメイン (例: dev-abc123.us.auth0.com) に、YOUR_API_IDENTIFIER は API 識別子 (例: https://my-express-api.example.com) に置き換えてください。JWT ミドルウェアを設定する
Express サーバーを作成し、JWT 検証を構成します。この処理で行うこと:
server.js
- Auth0 のドメインと API オーディエンスを使用して、JWT 検証ミドルウェアを作成します
- 受信したアクセストークンの
issおよびaudクレームを検証します - 個々のルートを保護するために
checkJwtを利用できるようにします
API ルートを作成
server.js にパブリックルートと保護されたルートを追加します。server.js
- パブリックルートでは認証は不要です
- 保護されたルートでは、有効な JWT を要求するために
checkJwtミドルウェアを使用します - スコープ付きルートでは、トークン内の特定の権限を要求するために
requiredScopes()を使用します req.auth.payloadには、認証済みリクエストのデコードされた JWT クレームが含まれますsubクレームには、ユーザーの一意の識別子が含まれます
API を起動する
開発サーバーを起動します:API は http://localhost:3001 で実行されています。
Node.js 18 以降では、
--watch フラグを使用すると、ファイルの変更時にサーバーが自動的に再起動します。APIをテストする
公開エンドポイントをテストします (認証は不要です) :以下のように表示されます:トークンなしで保護されたエンドポイントをテストします (失敗するはずです) :401 Unauthorized エラーが表示されるはずです。有効なトークンでテストするには、次の手順に従います。以下が表示されます:
- Auth0 Dashboard → Applications → APIs に移動します
- 対象の API を選択し、Test タブを開きます
- 生成されたアクセストークンをコピーします
チェックポイントこれで、保護された API が用意できているはずです。API は次のとおりです。
- 認証なしでパブリックエンドポイントへのリクエストを受け付ける
- 有効なトークンなしで保護されたエンドポイントへのリクエストを拒否する
- JWT トークンを Auth0 のドメインと対象者に照らして検証する
req.auth.payloadを通じて、トークンのクレームに含まれるユーザー情報を提供する
高度な使い方
スコープベースの認可
スコープベースの認可
スコープを使用すると、きめ細かなアクセス制御を実現できます。エンドポイントごとに必要なスコープを指定できます。Auth0 でスコープを設定する:
- Auth0 Dashboard で Applications → APIs → 対象の API の順に移動します
- Permissions タブを開きます
read:messages、write:messages、admin:accessなどの権限を追加します
server.js
リクエストに必要なスコープが含まれていない場合、API は
insufficient_scope エラーとともに 403 Forbidden を返します。アクセストークンを取得する際に、クライアントアプリケーションが正しいスコープを要求するようにしてください。カスタムクレームの検証
カスタムクレームの検証
任意の認証(公開/非公開ルートの混在)
任意の認証(公開/非公開ルートの混在)
同じルートで、認証済みアクセスと匿名アクセスの両方を許可できます。
server.js
CORS の設定
CORS の設定
Web アプリケーションからのリクエストを許可するには、CORS を有効にします。本番環境では、正確なオリジンを指定してください。
server.js
server.js
カスタムエラー処理
カスタムエラー処理
TypeScriptサポート
TypeScriptサポート
TypeScript プロジェクトでは、型定義をインストールしてプロジェクトを設定します。次のコマンドで実行します:
server.ts を作成します。server.ts
tsconfig.json を追加します。tsconfig.json
npx ts-node server.tsトラブルシューティング
よくある問題と解決策
よくある問題と解決策
次のステップ
- ロールベースアクセス制御 - きめ細かな権限を実装する
- API 認可のベストプラクティス - アクセストークンのベストプラクティスを確認する
- API を監視する - ログ記録と監視を設定する
- Auth0 Community - コミュニティでサポートを得る
リソース
- express-oauth2-jwt-bearer GitHub - ソースコードと使用例
- Express.js Documentation - Express の詳細情報
- Auth0 API Authentication - アクセストークンについて詳しく理解する
- JWT.io - JWT のデバッグとデコード