AIプロンプト
AIプロンプト
AIを使ってAuth0を統合しますか? このプロンプトをCursor、Windsurf、Copilot、Claude Codeまたはお気に入りのAI搭載IDEに追加して、開発を効率化しましょう。
このQuickstartを進めるには、以下が必要です。
- Python 3.9 以上
- pip パッケージマネージャー
- jq - Auth0 CLI の設定に必要
- FastAPI の基本知識
1
新しいFastAPIプロジェクトを作成
FastAPI プロジェクト用の新しいディレクトリを作成し、仮想環境を設定します。
2
依存関係のインストール
以下の依存関係を記述した 依存関係をインストールします:
requirements.txt ファイルを作成します。requirements.txt
3
Auth0 API の設定
FastAPI アプリケーションを表す Auth0 API を作成する必要があります。Domain と Identifier (Audience) の値は控えておいてください。次のステップで必要になります。
- Dashboard
- CLI
- Auth0 Dashboard で Applications > APIs に移動します
- Create API をクリックします
- API の Name を入力します (例: “My FastAPI API”)
- Identifier に API 識別子を設定します (例:
https://my-fastapi-api) - Signing Algorithm は RS256 のままにします
- Create をクリックします
Identifier は API の一意の識別子です。URL を使用することをおすすめしますが、公開されている URL である必要はありません。Auth0 がその URL を呼び出すことはないためです。また、この値は後から変更できません。
4
API の権限を定義する
権限 (スコープとも呼ばれます) を使うと、API へのアクセス方法を定義できます。API の権限は Auth0 Dashboard で作成できます。
- Auth0 Dashboard で API の Permissions タブに移動します
- 次の権限を追加します。
read:messages(説明: “メッセージの読み取り”)write:messages(説明: “メッセージの書き込み”)
5
Auth0のクライアントを設定する
Auth0の設定を保存するため、プロジェクトのルートディレクトリに
.env ファイルを作成します。.env
YOUR_AUTH0_DOMAIN はご利用の Auth0 ドメイン (例: dev-abc123.us.auth0.com) に、YOUR_API_IDENTIFIER は API 作成時に設定した識別子に置き換えてください。次に、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 Dashboard で Applications > APIs に移動します
- API を選択します
- Test タブをクリックします
- Asking Auth0 for tokens from my application セクションで Copy Token をクリックします
API を呼び出す
read:messages スコープが含まれていることを確認してください。
高度な使い方
クレームを使用せずにエンドポイントを保護する
クレームを使用せずにエンドポイントを保護する
エンドポイントを保護したいものの、クレームにアクセスする必要がない場合は、これによりアクセストークンは検証されますが、クレームは関数に注入されません。
dependencies パラメーターを使用できます。DPoP サポート
DPoP サポート
DPoP (Demonstrating Proof-of-Possession) は現在 早期アクセス 段階です。テナント で有効にするには、Auth0 Support にお問い合わせください。
Authorization: DPoP <token> と DPoP: <proof> の両方の header を含める必要があります。SDK は DPoP proof を自動的に検証し、それをアクセストークンにバインドします。リバースプロキシ向けの設定
リバースプロキシ向けの設定
アプリケーションがリバースプロキシ (nginx、AWS ALB など) の背後で動作している場合、DPoP のバリデーションを正しく機能させるにはプロキシ信頼を有効にする必要があります。必要な headers を転送するよう、リバースプロキシを設定します。これは DPoP のバリデーションに不可欠です。SDK はクライアントが使用した正確な URL と一致させる必要があるためです。プロキシ信頼が有効でないと、アプリケーションには内部 URL が見える一方で、DPoP proof は外部 URL を参照するため、バリデーションに失敗します。
エラー処理
エラー処理
SDK は、認証エラーが発生すると 認証エラーには、次のようなものがあります。
HTTPException を送出します。FastAPI はこれらを自動的に処理し、クライアントに適切な HTTP レスポンスを返します。必要に応じて、カスタムのエラー処理を実装することもできます。- 401 Unauthorized: アクセス トークンが存在しない、無効である、または期限切れ
- 403 Forbidden: トークンは有効だが、必要な権限 (スコープ) が不足している
よくある問題
403 Forbidden - スコープ不足
403 Forbidden - スコープ不足
問題: 有効なアクセストークンを使用していても、保護されたエンドポイントが 403 を返します。解決策: アクセストークンに必要なスコープが含まれていません。
- エンドポイントに必要なスコープを確認します
- トークンをリクエストするときに、必要なスコープを含めていることを確認します
- Auth0 Dashboard の API の Permissions タブに、そのスコープが存在することを確認します
- jwt.io でトークンをデコードし、必要な値を持つ
scopeクレームが含まれていることを確認します
ModuleNotFoundError: No module named 'fastapi_plugin'
ModuleNotFoundError: No module named 'fastapi_plugin'
問題: Python が Auth0 FastAPI SDK を見つけられません。解決策: SDK が現在有効な仮想環境にインストールされていることを確認してください。
Auth0 に接続できない(JWKS の取得に失敗)
Auth0 に接続できない(JWKS の取得に失敗)
問題: アプリケーションが Auth0 から署名鍵を取得できません。解決策: ネットワーク接続とドメイン設定を確認してください。
-
ドメインにアクセスできることを確認します:
-
*.auth0.comへの HTTPS アウトバウンド接続 (ポート 443) がファイアウォールで許可されていることを確認します -
企業のプロキシ配下にある場合は、
HTTP_PROXYとHTTPS_PROXY環境変数を設定します
DPoP のバリデーションに失敗する
DPoP のバリデーションに失敗する
問題: DPoP 認証で、URL またはプルーフのバリデーションに関するエラーが返されます。解決策:
-
リバースプロキシの背後にある場合は、プロキシの信頼を有効化します:
-
プロキシが次のヘッダーを転送していることを確認します:
X-Forwarded-ProtoX-Forwarded-HostX-Forwarded-Prefix
- テナントで DPoP が有効になっていることを確認します (Auth0 Support にお問い合わせください)
-
DPoP proof の
htuクレームがリクエスト URL と完全に一致していることを確認します
次のステップ
SDK ドキュメント
高度な設定や実装例については、GitHub の Auth0 FastAPI SDK をご覧ください
スコープと権限
きめ細かなアクセス制御のためにスコープを定義して活用する方法を学びましょう
Auth0 Actions
認証フローをカスタマイズし、トークンにカスタムクレームを追加する方法を学びましょう
FastAPI ドキュメント
FastAPI の機能、非同期パターン、ベストプラクティスについて詳しく学びましょう
API 認可
API にロールベースのアクセス制御 (RBAC) を実装する方法を学びましょう
本番環境にデプロイ
Auth0 を使用した FastAPI アプリケーションの本番デプロイのベストプラクティス