Skip to main content

AIプロンプト

AIを使ってAuth0を統合しますか? このプロンプトをCursor、Windsurf、Copilot、Claude Codeまたはお気に入りのAI搭載IDEに追加して、開発を効率化しましょう。
このQuickstartを進めるには、以下が必要です。
  • 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 の Name を入力します (例: “My FastAPI API”)
  4. Identifier に API 識別子を設定します (例: https://my-fastapi-api)
  5. Signing Algorithm は RS256 のままにします
  6. Create をクリックします
Identifier は API の一意の識別子です。URL を使用することをおすすめしますが、公開されている URL である必要はありません。Auth0 がその URL を呼び出すことはないためです。また、この値は後から変更できません。
DomainIdentifier (Audience) の値は控えておいてください。次のステップで必要になります。
4

API の権限を定義する

権限 (スコープとも呼ばれます) を使うと、API へのアクセス方法を定義できます。API の権限は Auth0 Dashboard で作成できます。
  1. Auth0 Dashboard で API の Permissions タブに移動します
  2. 次の権限を追加します。
    • read:messages (説明: “メッセージの読み取り”)
    • write:messages (説明: “メッセージの書き込み”)
これらの権限は、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 を呼び出す

アクセストークンを使用して、保護されたエンドポイントを呼び出します。
プライベートメッセージと user 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 をログインフローに追加します
カスタムクレームは、標準クレームとの競合を避けるため、名前空間付き形式 (例: https://myapp.example.com/claim_name) を使用する必要があります。
エンドポイントを保護したいものの、クレームにアクセスする必要がない場合は、dependencies パラメーターを使用できます。
これによりアクセストークンは検証されますが、クレームは関数に注入されません。
DPoP (Demonstrating Proof-of-Possession) は現在 早期アクセス 段階です。テナント で有効にするには、Auth0 Support にお問い合わせください。
DPoP は、アクセストークンをそれを要求したクライアントに暗号学的に関連付けることで、セキュリティを強化します。これにより、token の盗難やリプレイ攻撃を防止できます。SDK ではデフォルトで DPoP サポートが有効になっています。DPoP の動作は設定できます。
混合モード (デフォルト) では Bearer token と DPoP token の両方を受け入れます。
DPoP 専用モードでは Bearer token を拒否します。
DPoP を使用する場合、クライアントは Authorization: DPoP <token>DPoP: <proof> の両方の header を含める必要があります。SDK は DPoP proof を自動的に検証し、それをアクセストークンにバインドします。
trust_proxy は、アプリケーションが信頼できるリバースプロキシの背後にある場合にのみ有効にしてください。インターネットに直接公開されているアプリケーションでは、絶対に有効にしないでください。
アプリケーションがリバースプロキシ (nginx、AWS ALB など) の背後で動作している場合、DPoP のバリデーションを正しく機能させるにはプロキシ信頼を有効にする必要があります。
必要な headers を転送するよう、リバースプロキシを設定します。
これは 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. 設定 タブで 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 またはプルーフのバリデーションに関するエラーが返されます。解決策:
  1. リバースプロキシの背後にある場合は、プロキシの信頼を有効化します:
  2. プロキシが次のヘッダーを転送していることを確認します:
    • X-Forwarded-Proto
    • X-Forwarded-Host
    • X-Forwarded-Prefix
  3. テナントで DPoP が有効になっていることを確認します (Auth0 Support にお問い合わせください)
  4. DPoP proof の htu クレームがリクエスト URL と完全に一致していることを確認します

次のステップ

SDK ドキュメント

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

スコープと権限

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

Auth0 Actions

認証フローをカスタマイズし、トークンにカスタムクレームを追加する方法を学びましょう

FastAPI ドキュメント

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

API 認可

API にロールベースのアクセス制御 (RBAC) を実装する方法を学びましょう

本番環境にデプロイ

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