認証プロバイダのコール失敗がHTTP 500として表示されます

APIゲートウェイ・サービスを使用してAPIゲートウェイおよびAPIデプロイメントを正常に作成し、APIのコール時にHTTP 500エラーを返す認証プロバイダ・コールの失敗をトラブルシューティングする方法について説明します。

APIゲートウェイが認証中にHTTP 500を返した場合、リクエストはバックエンド・サービスに到達する前に失敗する可能性があります。この場合、構成済のアイデンティティ・プロバイダ・コール・パスを確認します。

問題の症状

次の症状が1つ以上表示される場合があります。

  • クライアントは、トークン認証を使用するルートでHTTP 500レスポンスを受信します。

  • バックエンド・サービスでは、失敗したAPIコールに対する一致するリクエストは表示されません。

  • トークンのイントロスペクション、検出またはリモートJSON Web Key Set (JWKS)の検証中に、障害が発生します。

  • この障害は、外部アイデンティティ・プロバイダに依存するルートでのみ発生します。

考えられる理由

この問題には通常、次のいずれかの原因が考えられます。

  • 構成されたintrospection_endpoint、検出エンドポイントまたはJWKSエンドポイントは、HTTP 500または別の予期しないレスポンスを返します。

  • 接続がタイムアウトしたか拒否されたため、APIゲートウェイはアイデンティティ・プロバイダ・エンドポイントに接続できません。

  • アイデンティティ・プロバイダは、APIゲートウェイで解析できないレスポンスを返します。

  • 認証ポリシーが間違ったプロバイダ・エンドポイントを参照しています。

  • トークン・イントロスペクション用に構成されたクライアント資格証明が正しくないか、アイデンティティ・プロバイダによって受け入れられません。

失敗した認証リクエストの確認

失敗したリクエストを使用して、エラーが発生した場所を確認します。

  1. アクセス・ログで、リクエストを検索し、opcRequestId値を書き留めます。

  2. クライアントに表示されるレスポンス・ステータスがHTTP 500であることを確認します。

  3. 実行ログで同じopcRequestId値を検索します。

  4. 実行ログがauthentication.idpCallFailedをレポートするかどうかを確認します。

実行ログでauthentication.idpCallFailedがレポートされた場合は、バックエンド・ルートをトラブルシューティングする前に、アイデンティティ・プロバイダのコール・パスをトラブルシューティングします。

認証ポリシーの確認

プロバイダ・エンドポイントおよび資格証明の問題の認証ポリシーを確認します:

  • デプロイメント仕様またはコンソール内の検出、JWKSまたはイントロスペクション・エンドポイントURIが、目的のアイデンティティ・プロバイダを指していることを確認します。

  • ログ・メッセージでintrospection_endpointが識別される場合は、他のプロバイダ・エンドポイントを確認する前にエンドポイントを確認します。

  • 構成されたクライアントIDおよびクライアント・シークレットがイントロスペクション・エンドポイントに対して有効であることを確認します。

  • アイデンティティ・プロバイダが、選択した認証ポリシーで想定される形式で有効なJSONを返すことを確認します。

ログ・メッセージのレビュー

失敗したプロバイダ・コールを識別するメッセージの実行ログを確認します。

  • authentication.idpCallFailed

  • Unexpected response from the introspection_endpoint uri: <uri>, received (500, Server Error).

  • Unable to connect to the introspection_endpoint uri: <uri>, TIMEOUT. Make sure that the URI is accessible on the subnet of the gateway.

  • Unable to connect to the introspection_endpoint uri: <uri>, CONNECTION_REFUSED. Make sure that the URI is accessible on the subnet of the gateway.

  • Unable to parse response from Identity Provider

これらのメッセージは、失敗の原因がプロバイダの可用性、ネットワークの到達性、または無効なプロバイダのレスポンスのいずれであるかを識別するのに役立ちます。

Fix認証プロバイダのコール失敗

特定した障害と一致する解決を適用します。

  • プロバイダ・エンドポイントURIが正しくない場合は、認証ポリシーの検出、JWKSまたはイントロスペクション・エンドポイントを更新します。

  • アイデンティティ・プロバイダがHTTP 500を返す場合は、APIゲートウェイの欠陥として問題を調査する前に、プロバイダ側のエラーを解決してください。

  • プロバイダ・レスポンスを解析できない場合は、アイデンティティ・プロバイダを更新して、必要な形式で有効なJSONを返します。

  • イントロスペクション資格証明が正しくない場合は、構成されたクライアント資格証明を更新します。

  • プロバイダ・エンドポイントがタイムアウトしたか接続を拒否した場合、ゲートウェイ・サブネットと同じネットワーク・パスを使用するコンピュート・インスタンスからエンドポイントをテストします。次に、接続をブロックするファイアウォール、ルート表、セキュリティ・ルールまたはプロバイダ・エンドポイント構成を修正します。

認証プロバイダ・コールの検証

プロバイダ構成またはネットワーク・パスを更新した後、認証が成功することを検証します。

  1. 同じAPIリクエストを再度送信します。

  2. 認証中にリクエストがHTTP 500を返さなくなったことを確認します。

  3. リクエストの実行ログにauthentication.idpCallFailedが表示されなくなったことを確認します。

  4. トークンの有効時に、リクエストが予期されるバックエンド・サービスに到達したことを確認します。

詳細情報

詳細は、次を参照してください: