メインコンテンツへスキップ
このページでは、サードパーティアプリケーションと連携する際によく発生するエラーの対処方法を説明します。サードパーティアプリケーションの機能と制限の概要については、サードパーティアプリケーション向けのセキュリティ制御を参照してください。

サードパーティアプリケーションの問題を特定する

OAuthフロー中にエラーが発生した場合は、そのアプリケーションがサードパーティアプリケーションかどうかを確認してください。
  • クライアントIDのプレフィックス: サードパーティアプリケーションの client_idtpc_ で始まります。
  • テナントログ: Auth0 Dashboard > Monitoring > Logs でアプリケーションをフィルタリングし、エラーイベントを確認します。

よくあるエラー

トークンのリクエスト時に unauthorized_client が返される

原因: サードパーティアプリケーションに、リクエストされた API に対するクライアントグラントがありません。サードパーティアプリケーションでは、API アクセスポリシーが Allow All に設定されている場合でも、常に明示的なクライアントグラントが必要です。 解決策: アプリケーションのクライアントグラントを作成するか、サードパーティアプリケーションのデフォルト権限を設定してください。詳細については、Application Access to APIs: Client Grants を参照してください。
curl --request POST \
  --url 'https://YOUR_DOMAIN/api/v2/client-grants' \
  --header 'Authorization: Bearer YOUR_MANAGEMENT_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "default_for": "third_party_clients",
    "audience": "https://api.example.com",
    "scope": ["read:items", "write:items"],
    "subject_type": "user"
  }'

API ポリシーが「Allow All」でも unauthorized_client が発生する

原因: API のアクセス ポリシー設定である Allow All は、ファーストパーティ アプリケーションにのみ適用されます。サードパーティアプリケーションでは、この設定に関係なく、常に明示的なクライアントグラントが必要です。 解決策: サードパーティ アプリケーションのデフォルト権限を設定するか、アプリケーションごとに権限を作成します。

サポートされていないパラメーターを含む /authorize での invalid_request

原因: サードパーティアプリケーションでは、/authorize エンドポイントに対して厳密なパラメーター検証が行われます。screen_hintlogin_ticketinvitationrequest (JAR) 、request_uri (PAR) などのパラメーターはサポートされていません。 解決策: 認可リクエストからサポート対象外のパラメーターを削除してください。使用できるパラメーターの一覧については、サードパーティアプリケーションのセキュリティ制御を参照してください。

unsupported_response_type (id_token または token を使用した場合)

原因: サードパーティアプリケーションでは、インプリシットフロー (response_type=token または response_type=id_token) は使用できません。 解決策: PKCE を使用し、response_type=code を指定します。

/oauth/token から IDトークンが返されない

原因: セキュリティ制御が強化されたサードパーティアプリケーションでは、このリリースにおいて IDトークンは返されず、OIDC スコープ (openidprofileemail) も処理されません。トークンエンドポイントはアクセストークンを返しますが、id_token は返しません。 解決策: アプリケーションに必要な情報を取得するには、API をスコープとして指定したアクセストークンを使用します。サードパーティアプリケーション向けの OIDC サポートは、今後のリリースで提供される予定です。

サポートされていないグラントタイプ

原因: サポートされているグラントタイプは authorization_coderefresh_tokenclient_credentials のみです。implicitpasswordurn:ietf:params:oauth:grant-type:device_code などのグラントタイプは使用できません。 解決策: ユーザー向けフローでは、PKCE を使用する Authorization Code Flow を使用してください。マシン間アクセスでは、機密クライアント (token_endpoint_auth_methodnone 以外である必要があります) で Client Credentials Flow を使用してください。

Classic Login が動作しない

原因: サードパーティアプリケーションでは、Classic Login はサポートされていません。 解決策: Universal Login を使用してください。Universal Login は、すべてのアプリケーションで推奨されるログイン方式です。

クライアントIDが tpc_ で始まる

原因: サードパーティアプリケーションには、トラフィックを分類するため、クライアントIDに自動的に tpc_ プレフィックスが付与されます。これは作成時に割り当てられるもので、変更はできません。 解決策: これは想定どおりの動作です。より長いクライアントID形式に対応できるよう、クライアント側の検証やデータベース制約を更新してください。

is_first_party またはセキュリティモードは変更できません

原因: セキュリティモードとアプリケーションの所有タイプは、作成時に決まる恒久的な設計上の設定です。後から変更することはできません。 解決策: 必要な設定で新しいアプリケーションを作成してください。既存のアプリケーションをファーストパーティとサードパーティの間で、またはセキュリティモード間で変換することはできません.

メールアドレスの確認またはパスワードのリセットでエラーページが表示される

原因: アプリケーションの redirection_policyopen_redirect_protection に設定されているため、Auth0 はメールテンプレート内で application.callback_domain を公開しません。 解決策: サードパーティアプリケーション向けのフォールバックを提供する Liquid 条件式を追加するように、メールテンプレートを更新します。
{% if application.callback_domain == '' %}
  https://YOUR_FALLBACK_DOMAIN
{% endif %}
{% if application.callback_domain != '' %}
  {{ application.callback_domain }}/result-page
{% endif %}
または、Dashboard または Management API で作成した信頼済みのサードパーティアプリケーションでは、redirection_policyallow_always に設定します。詳細については、サードパーティアプリケーションのセキュリティ制御を参照してください。

DCRクライアントはどのAPIにもアクセスできない

原因: 動的に登録されたクライアントがトークンをリクエストするには、あらかじめデフォルト権限を設定しておく必要があります。デフォルト権限が設定されていない場合、サードパーティのDCRクライアントはどのAPIにもアクセスできません。 解決策: DCRクライアントがアクセスする必要のある各APIで、サードパーティアプリケーションのデフォルト権限を設定してください。詳細については、サードパーティアプリケーションを設定するを参照してください。

/userinfo がエラーを返す

原因: このリリースでは、/userinfo エンドポイントはサードパーティアプリケーションでは利用できません。 解決策: アプリケーションに必要な情報を取得するには、API のスコープが付与されたアクセストークンを使用してください。/userinfo を含む OIDC サポートは、今後のリリースで提供される予定です。

/oauth/revoke は動作するが、ログアウトエンドポイントは利用できない

原因: ログアウトエンドポイント (/v2/logout) はサードパーティアプリケーションでは利用できません。 解決策: POST /oauth/revoke を使用してリフレッシュトークンを失効させます。セッション状態のクリアはアプリケーション側で行う必要があります。

サードパーティアプリケーションでは接続を利用できません

原因: 接続がドメインレベルに昇格されていません。サードパーティアプリケーションでは、ドメインレベルの接続を介してのみユーザーを認証できます。 解決策: 接続をドメインレベルに昇格します。詳細については、接続をドメインレベルに昇格するを参照してください。

リフレッシュトークンのローテーションによる問題

原因: OAuth 2.1 の要件に沿って、公開クライアント (SPA、Native) のサードパーティアプリケーションでは、リフレッシュトークンのローテーションがデフォルトで有効になっています。 解決策: リフレッシュトークンのローテーションを正しく処理するよう、アプリケーションを実装してください。トークン交換のたびに新しいリフレッシュトークンが返され、以前のトークンは無効になります。管理者は、手動で作成したアプリケーションのローテーション設定を Dashboard または Management API で調整できます。

詳しくはこちら