メインコンテンツへスキップ
このクイックスタートは現在ベータ版です。ぜひフィードバックをお寄せください。

AI を使って Auth0 を統合する

Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使用している場合は、agent skills を使って、数分で Auth0 認証を自動的に追加できます。インストール:
次に、AI アシスタントに次のように依頼します。
AI アシスタントが、Auth0 API の作成、credentials の取得、Auth0 ASP.NET Core Authentication API SDK のインストール、JWT ベアラー認証の構成、保護された API エンドポイントの実装を自動的に行います。agent skills の詳細なドキュメント →
前提条件: 開始する前に、次のものがインストールされていることを確認してください。
  • .NET 8.0 SDK 以降
  • 使用する IDE (Visual Studio 2022、VS Code、または Rider)
.NET バージョンの互換性: このクイックスタートは .NET 8.0 以降で動作します。

はじめに

このクイックスタートでは、ASP.NET Core Web API に Auth0 JWT 認証を追加する方法を紹介します。Auth0 ASP.NET Core API SDK を使用して、保護されたエンドポイントを持つ安全な API を構築します。
1

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

このクイックスタート向けの新しい ASP.NET Core Web API プロジェクトを作成する
プロジェクトを開く
2

Auth0 SDKをインストールする

3

Auth0 API をセットアップする

次に、Auth0テナントで新しいAPIを作成し、その設定をプロジェクトに追加します。CLIコマンドを実行して自動的に行う方法と、Dashboardから手動で行う方法のいずれかを選択できます。
Auth0 API を作成し、appsettings.json ファイルを更新するには、プロジェクトのルートディレクトリで次のコマンドを実行します。
4

認証を設定

Program.cs の内容をすべて、次のコードに置き換えます。
Program.cs
5

パブリックエンドポイントと保護されたエンドポイントを作成する

認証をテストするためのエンドポイントを追加します。Program.csapp.Run() の前に、次のコードを追加します。
Program.cs
6

API を起動する

これで、API は https://localhost:7190 で実行中です (またはそれに類似した URL です。正確な URL はコンソールの出力を確認してください) 。
チェックポイントこれで、Auth0 で保護された完全に動作する API が localhost 上で実行されているはずです。

高度な使い方

アクセストークンを使用して、保護されたエンドポイントをテストします。1. アクセストークンを取得します。 Auth0 から Client Credentials Flow を使用して取得します。
YOUR_CLIENT_IDYOUR_CLIENT_SECRET を取得するには、Auth0 Dashboard で Machine to Machine Application を作成し、API に対して認可します。
2. 公開エンドポイントをテストします。 (200 OK が返るはずです)
3. 認証なしで保護されたエンドポイントをテストします。 (401 Unauthorized が返るはずです)
4. トークンを使用して保護されたエンドポイントを呼び出します。
より大規模な API では、最小 API エンドポイントではなくコントローラーを使用します。1. コントローラーのサポートを追加します。
Program.cs
2. コントローラーを作成します。Controllers/MessagesController.cs を作成します。
Controllers/MessagesController.cs
アクセストークン内の特定のスコープに基づいてエンドポイントを保護します。1. Auth0 API でスコープを定義します。Auth0 Dashboard → APIs → Your API → Permissions で、スコープを追加します。
  • read:messages - メッセージの読み取り
  • write:messages - メッセージの書き込み
2. 認可ポリシーを設定します。
Program.cs
3. エンドポイントにポリシーを適用します。
アクセストークンをリクエストする際は、必要なスコープを含めます。
DPoP (Demonstration of Proof-of-Possession) は、アクセストークンを暗号鍵に関連付けることで、トークンの窃取やリプレイ攻撃を防止します。DPoP サポートを有効にする:
Program.cs
DPoP モード:DPoP トークンと Bearer トークンの両方を受け入れる (既定) :
DPoP トークンのみを受け入れ、Bearer トークンは拒否する:
時刻検証パラメーターを設定する:
DPoP の詳細については、Auth0 の DPoP ドキュメントを参照してください。
複雑な要件に対応するため、再利用可能な認可ポリシーを作成します。1. カスタム要件を作成する:
Authorization/HasScopeRequirement.cs
2. ハンドラーを作成する:
Authorization/HasScopeHandler.cs
3. ポリシーを登録して使用する:
Program.cs
認証済みトークンからユーザー情報を取得します。
特定の要件に応じて、JWT の検証パラメーターをカスタマイズします。
Program.cs

参考資料

SDK ドキュメント

SDK の完全なドキュメントと API リファレンス

移行ガイド

JWT ベアラー認証からの移行

コード例

包括的なコード例とパターン

DPoP ドキュメント

所有証明によるセキュリティについて確認する

トークンのベストプラクティス

トークン セキュリティのベストプラクティス

コミュニティフォーラム

Auth0 コミュニティでサポートを受ける

よくある問題

問題: オーディエンスの不一致により、トークンの検証が失敗します。解決策: appsettings.jsonAudience が Auth0 API の Identifier と完全に一致していることを確認してください。トークン内の audience クレームもこの値と一致している必要があります。
問題: issuer エラーにより、トークンの検証が失敗します。解決策: ドメインが正しく、https:// が含まれていないことを確認してください。ライブラリは https://{Domain} の形式で authority を自動的に構築します。
問題: ArgumentNullException: Value cannot be null. (Parameter 'Domain') などのエラーが発生します。解決策: appsettings.json に Domain と Audience の値を含む Auth0 セクションがあることを確認してください。あわせて、設定が正しく読み込まれていることも確認してください。
問題: ローカル実行時に SSL/TLS 証明書エラーが発生します。解決策: 開発用証明書を信頼してください。
または、新しい証明書を生成してください。
問題: 設定が正しいにもかかわらず、認証が機能しません。解決策: ミドルウェアが正しい順序で配置されていることを確認してください。UseAuthentication()UseAuthorization() より前に指定する必要があります。
問題: スコープベースの認可ポリシーが常に失敗します。解決策: アクセストークンに必要なスコープが含まれていることを確認してください。トークンをリクエストする際は、スコープを指定してください。
また、スコープが Auth0 API の設定で定義されていることも確認してください (Dashboard → APIs → Your API → Permissions) 。

サンプルアプリケーション

すべての機能を網羅した完全なサンプルアプリケーションを、SDK リポジトリで利用できます。

プレイグラウンドアプリケーション

パブリックエンドポイントと保護されたエンドポイント、DPoP サポート、Swagger UI との統合、Postman コレクションが含まれています
クローンして実行します: