はじめに
依存関係をインストール
依存関係を管理するための
requirements.txt を作成します:requirements.txt
requirements.txt ファイルには、プロジェクトのすべての依存関係が記載されています。これらをインストールするには、次を実行します:Auth0 アプリを設定する
次に、Auth0テナントで新しいアプリを作成し、プロジェクトに環境変数を追加します。CLIコマンドを実行して自動的に行う方法と、Dashboardから手動で行う方法のいずれかを選択できます。
- CLI
- Dashboard
プロジェクトのルートディレクトリで次のシェルコマンドを実行し、Auth0 アプリケーションを作成して
.env ファイルを生成します。認証設定、ルート、テンプレートを作成する
ファイルを作成する次のコードスニペットを追加します。
開発時のみ: この例では、説明のためにシンプルなインメモリストレージクラス (
MemoryStateStore と MemoryTransactionStore) を使用しています。これらのストアは、アプリケーションを再起動するとすべてのセッションデータが失われ、マルチインスタンス構成のデプロイでは動作しません。本番環境のアプリケーションでは、永続ストレージを実装する必要があります。この SDK はフレームワークに依存しないため、独自の StateStore と TransactionStore の実装を提供する必要があります。Redis、PostgreSQL、その他の永続ストレージバックエンドの実装方法について詳しくは、公式 SDK のストレージ実装例 を参照してください。アプリを実行する
チェックポイントこれで、localhost で動作する Auth0 のログインページが完成しているはずです
高度な使用方法
APIトークンの取得
APIトークンの取得
保護された API を呼び出す必要がある場合は、アクセストークンを取得します。
この機能を使用するには、次の設定が必要です。
.envファイルでAUTH0_AUDIENCEを設定する- スコープに
offline_accessを含める (リフレッシュトークン用) auth.pyのauthorization_paramsを更新する:
カスタムストレージの設定
カスタムストレージの設定
よくある問題
MissingRequiredArgumentError
MissingRequiredArgumentError
問題: アプリの起動時に “MissingRequiredArgumentError: secret” が表示される原因:
AUTH0_SECRET 環境変数が存在しないか、正しく読み込まれていません。解決方法:.envファイルがプロジェクトのルートにあることを確認しますpython-dotenvがインストールされていることを確認します:pip install python-dotenv- 必要に応じて新しいシークレットを生成します:
openssl rand -hex 64 - 生成した値を
.envに追加します:AUTH0_SECRET=your_generated_secret - Flask アプリケーションを再起動します
無効なコールバックURLエラー
無効なコールバックURLエラー
問題: ログイン時に “Callback URL mismatch” または “invalid_request” エラーが表示される原因: コード内のリダイレクト URI が、Auth0 Dashboard に登録されているものと一致していません。解決方法:
.envファイルを確認します:AUTH0_REDIRECT_URI=http://localhost:5000/callback- Auth0 Dashboard → Applications → Your App → Settings に移動します
http://localhost:5000/callbackを Allowed Callback URLs に追加します- Save Changes をクリックします
- Flask アプリケーションを再起動します
AsyncIO イベントループのエラー
AsyncIO イベントループのエラー
問題: “RuntimeError: This event loop is already running” または同様の非同期関連のエラーが表示される原因: Flask 2.0 以降の非同期サポートでは、特定の構成で問題が発生することがあります。解決策:非同期サポートを有効にして Flask をインストールします。次に、Flask アプリケーションを再起動します。
モジュールが見つからないエラー
モジュールが見つからないエラー
問題: “ModuleNotFoundError: No module named ‘auth0_server_python’” または同様のエラーが表示される原因: SDK がインストールされていないか、仮想環境が有効になっていません。解決策:
- 仮想環境が有効になっていることを確認します。
- SDK をインストールします。
- インストールを確認します。
ClaimDecodingFailed エラー
ClaimDecodingFailed エラー
問題: 認証中に “ClaimDecodingFailed” または “Failed to decode claims” エラーが表示される原因: Auth0 から受け取った IDトークン または アクセストークン を正しくデコードできませんでした。多くの場合、原因は次のとおりです。
- 無効な JWT 形式
- 破損したセッションデータ
- 署名アルゴリズムの不一致
- サーバーと Auth0 間のクロックスキュー
.envファイル内のAUTH0_CLIENT_SECRETが正しいことを確認します- システム時刻が同期されていることを確認します (NTP):
- ブラウザーのクッキーを削除し、認証をやり直します
AUTH0_DOMAINにhttps://プレフィックスが含まれていないことを確認します- Auth0 Dashboard → Applications → Your App → Settings → Advanced → OAuth → JsonWebToken Signature Algorithm が SDK の設定と一致していることを確認します
トークンの期限切れまたは無効
トークンの期限切れまたは無効
CORS とクロスオリジンエラー
CORS とクロスオリジンエラー
問題: ブラウザのコンソールに CORS エラーまたは “Blocked by CORS policy” が表示される原因: アプリケーションのオリジンが Auth0 側で適切に設定されていません。解決策:
- Auth0 Dashboard → Applications → Your App → Settings で、オリジンを追加します。
- Allowed Web Origins:
http://localhost:5000 - Allowed Callback URLs:
http://localhost:5000/callback - Allowed Logout URLs:
http://localhost:5000
- Allowed Web Origins:
- 本番環境では、本番用の URL も追加します。
- フロントエンドの JavaScript から Auth0 API を呼び出す場合は、Flask アプリで CORS が適切に設定されていることを確認します。
レート制限の超過
レート制限の超過
問題: “Too many requests” または “Rate limit exceeded” エラーが表示される原因: アプリケーションが認証リクエストに対する Auth0 の rate limits を超過しています。解決策:
- Auth0 Dashboard → Monitoring → Logs で rate limit の詳細を確認します
- リトライに指数バックオフを実装します。
- Auth0 のサブスクリプションプランの制限を確認します
- 不要なトークンリクエストを減らせるよう、authentication flow を最適化します
- 新しいトークンを頻繁にリクエストするのではなく、適切にキャッシュします