メインコンテンツへスキップ

AI プロンプト

AIを使ってAuth0を統合していますか? このプロンプトをCursor、Windsurf、Copilot、Claude Codeなどお好みのAI搭載IDEに追加して、開発を効率化しましょう。
このクイックスタートを進めるには、以下が必要です。
  • Python 3.9 以上
  • pip パッケージマネージャー
  • jq - Auth0 CLI のセットアップに必要
  • FastAPI の基本的な知識
まだお持ちでない場合は、手順に沿って進められるよう、無料の Auth0 アカウントにサインアップしてください。
このガイドでは、FastAPI API に Auth0 を統合して認証を追加し、エンドポイントを保護する方法を説明します。
1

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

FastAPI プロジェクト用の新しいディレクトリを作成し、仮想環境をセットアップします。
2

依存関係をインストール

次の依存関係を含む requirements.txt ファイルを作成します。
requirements.txt
依存関係をインストールします。
3

Auth0 APIを設定する

FastAPI アプリケーションを表す Auth0 API を作成する必要があります。
  1. Auth0 Dashboard で Applications > APIs に移動します
  2. Create API をクリックします
  3. API の 名前 を入力します (例: “My FastAPI API”)
  4. Identifier を API 識別子に設定します (例: https://my-fastapi-api)
  5. Signing Algorithm は RS256 のままにします
  6. Create をクリックします
Identifier は API の一意の識別子です。URL を使用することを推奨しますが、公開されている URL である必要はありません。Auth0 からこの URL が呼び出されることはありません。この値は後から変更できません。
ドメインIdentifier (オーディエンス) の値を控えておいてください。これらは次の手順で必要になります。
4

API の権限を定義する

Permissions (スコープとも呼ばれます) を使用すると、API へのアクセス方法を定義できます。API の Permissions は Auth0 Dashboard で作成できます。
  1. Auth0 Dashboard で、API の Permissions タブに移動します
  2. 次の Permissions を追加します:
    • 説明が “Read messages” の read:messages
    • 説明が “Write messages” の write:messages
これらの Permissions は、API 内の特定のエンドポイントへのアクセスを制御するために使用します。
5

Auth0のクライアントを設定する

Auth0 の設定を保存するため、プロジェクトのルートに .env ファイルを作成します。
.env
YOUR_AUTH0_DOMAIN をご利用の Auth0 ドメイン (例: dev-abc123.us.auth0.com) に、YOUR_API_IDENTIFIER を API 作成時に設定した識別子に置き換えます。
.env ファイルは絶対にバージョン管理にコミットしないでください。認証情報を安全に保つため、.gitignore ファイルに追加してください。
次に、app.py ファイルを作成し、Auth0 を使用して FastAPI アプリケーションを初期化します。
app.py
6

保護されたルートを作成

次のルートを app.py ファイルに追加してください。これらのルートは、アクセス制御のレベルの違いを示しています。
app.py
require_auth() メソッドは、Authorization ヘッダーで送信されたアクセストークンを検証します。scopes パラメーターを指定して呼び出すと、トークンに指定した権限が含まれていることも検証します。
7

API を起動する

FastAPI アプリケーションを起動します。
API は http://localhost:8000 で実行中です。
ブラウザで http://localhost:8000/api/public にアクセスしてください。認証なしで公開メッセージが表示されるはずです。

API をテストする

保護されたエンドポイントをテストするには、Auth0 からアクセストークンを取得する必要があります。

アクセストークンを取得する

テスト用のアクセストークンを取得する最も簡単な方法は、Auth0 Dashboard を使用することです。
  1. Auth0 Dashboard で Applications > APIs に移動します
  2. API を選択します
  3. Test タブをクリックします
  4. Asking Auth0 for tokens from my application セクションで Copy Token をクリックします

API を呼び出す

アクセストークンを使用して、保護されたエンドポイントを呼び出します。
非公開メッセージとユーザー ID を含むレスポンスを受け取るはずです。 スコープ付きエンドポイントをテストするには、トークンに read:messages スコープが含まれていることを確認します。
トークンに必要なスコープが含まれていない場合、403 Forbidden レスポンスが返されます。

高度な使用方法

Auth0 Actions でアクセストークンに追加したカスタムクレームにアクセスできます。ルートハンドラーでカスタムクレームにアクセスするには、次のようにします。
アクセストークンにカスタムクレームを追加するには、Auth0 Action を作成します。
  1. Auth0 Dashboard で Actions > Library に移動します
  2. Create Action をクリックします
  3. Build from scratch を選択します
  4. Action に名前を付け、Login / Post Login トリガーを選択します
  5. カスタムクレームを追加します
  1. Deploy をクリックし、Action を Login フローに追加します
標準クレームとの競合を避けるため、カスタムクレームには名前空間付きの形式 (例: https://myapp.example.com/claim_name) を使用する必要があります。
エンドポイントを保護する必要はあってもクレームにアクセスする必要がない場合は、dependencies パラメーターを使用できます。
これによりアクセストークンは検証されますが、クレームは関数に渡されません。
DPoP (Demonstrating Proof-of-Possession) は現在 Early Access 段階です。テナントで有効にするには、Auth0 support にお問い合わせください。
DPoP は、アクセストークンを要求元のクライアントに暗号学的に結び付けることで、セキュリティを強化します。これにより、トークンの窃取やリプレイ攻撃を防止できます。SDK では、デフォルトで DPoP サポートが有効になっています。DPoP の動作は設定できます。
混合モード (デフォルト) では、Bearer トークンと DPoP トークンの両方を受け入れます。
DPoP 専用モード では、Bearer トークンを拒否します。
DPoP を使用する場合、クライアントは Authorization: DPoP <token> ヘッダーと DPoP: <proof> ヘッダーの両方を含める必要があります。SDK は DPoP proof を自動的に検証し、アクセストークンに結び付けます。
trust_proxy は、アプリケーションが信頼できるリバースプロキシの背後にある場合にのみ有効にしてください。インターネットに直接公開されているアプリケーションでは、絶対に有効にしないでください。
アプリケーションがリバースプロキシ (nginx、AWS ALB など) の背後で動作している場合、DPoP の検証を正しく機能させるには、プロキシの信頼を有効にする必要があります。
必要なヘッダーを転送するように、リバースプロキシを設定します。
これは DPoP の検証に不可欠です。SDK では、クライアントが使用した正確な URL と一致させる必要があるためです。プロキシの信頼を有効にしないと、アプリケーションには内部 URL が見える一方で、DPoP proof は外部 URL を参照するため、検証に失敗します。
SDK は、認証エラーが発生すると HTTPException を送出します。FastAPI はこれらを自動的に処理し、クライアントに適切な HTTP レスポンスを返します。必要に応じて、カスタムのエラー処理を実装することもできます。
認証エラーには、次のものがあります。
  • 401 Unauthorized: アクセストークンがない、無効である、または期限切れである
  • 403 Forbidden: トークンは有効だが、権限 (スコープ) が不足している

よくある問題

問題: トークンの検証が “Invalid audience” エラーで失敗します。解決策: .env ファイル内の AUTH0_AUDIENCE が、Auth0 Dashboard で API に設定した Identifier と完全に一致していることを確認してください。
  1. Auth0 Dashboard を開き、Applications > APIs に移動します
  2. 対象の API を選択します
  3. Settings タブで Identifier の値を確認します
  4. .env ファイルを更新します:
  5. アプリケーションを再起動します
問題: トークンの検証が “Invalid issuer” エラーで失敗します。解決策: AUTH0_DOMAIN が正しく、https:// プロトコルを含んでいないことを確認してください。ドメインは https://dev-abc123.us.auth0.com ではなく、dev-abc123.us.auth0.com の形式にする必要があります。.env ファイルを更新します:
問題: 有効なアクセストークンを使用していても、保護されたエンドポイントから 403 が返されます。解決策: アクセストークンに必要なスコープが含まれていません。
  1. エンドポイントに必要なスコープを確認します
  2. トークンをリクエストする際に、必要なスコープを含めるようにします
  3. Auth0 Dashboard の API の Permissions タブに、そのスコープが存在することを確認します
  4. jwt.io でトークンをデコードし、必要な値を含む scope クレームがあることを確認します
問題: Python が Auth0 FastAPI SDK を見つけられません。解決策: SDK が現在アクティブな仮想環境にインストールされていることを確認してください。
問題: アプリケーションが Auth0 から署名鍵を取得できません。解決策: ネットワーク接続とドメイン設定を確認してください。
  1. ドメインにアクセスできることを確認します:
  2. ファイアウォールで *.auth0.com へのアウトバウンド HTTPS (ポート 443) 接続が許可されていることを確認します
  3. 企業プロキシの配下にある場合は、HTTP_PROXYHTTPS_PROXY 環境変数を設定します
問題: DPoP 認証で、URL または proof の検証に関するエラーが返されます。解決策:
  1. リバースプロキシの配下にある場合は、プロキシの信頼設定を有効にします:
  2. プロキシが次のヘッダーを転送していることを確認します:
    • X-Forwarded-Proto
    • X-Forwarded-Host
    • X-Forwarded-Prefix
  3. テナントで DPoP が有効になっていることを確認します (Auth0 サポートにお問い合わせください)
  4. DPoP proof の htu クレームがリクエスト URL と完全に一致していることを確認します

次のステップ

SDK ドキュメント

高度な設定や実装例については、GitHub の Auth0 FastAPI SDK を参照してください

スコープと権限

きめ細かなアクセス制御のために、スコープを定義して活用する方法を学びます

Auth0 Actions

認証フローをカスタマイズし、トークンにカスタムクレームを追加します

FastAPI ドキュメント

FastAPI の機能、非同期パターン、ベストプラクティスについて詳しく学びます

API 認可

API にロールベースアクセス制御 (RBAC) を実装します

本番環境にデプロイ

Auth0 を使用した FastAPI アプリケーションのデプロイに関するベストプラクティス