アプリケーション・ゲートウェイ
アプリケーション・ゲートウェイの一般的な問題をトラブルシューティングする方法を学習します。
My Response Error Message Contains: 400 Bad Request: Invalid header value (応答エラーメッセージに含まれる内容: 400 Bad Request: 無効なヘッダー値)
レスポンス・エラー・メッセージに400 Bad Request: invalid header value
が含まれる場合の一般的な原因について学習します。
アプリケーション・ゲートウェイは、アップストリーム・アプリケーション・サーバーにプロキシ設定されたリクエストにヘッダーを追加します。これらのヘッダーの1つであるidcs_user_display_name
は、アイデンティティ・ドメイン・ユーザーの「名」および「姓」に設定された値に応じて、新しいRFCで定義されている無効な文字を持つ場合があります。この新しいRFCは、許可される文字を印刷可能なUS-ASCII文字(つまり、0x21 - 0x7Eとスペースおよび水平タブ文字)に制限します。RFC 7230 HTTP/1.1 Message Syntax and Routingを参照してください。
新しいRFCを強制するアプリケーション・サーバーは、次のレスポンスでリクエストを拒否します: 400 Bad Request: invalid header value。ノート: 正確なレスポンスは、使用されているアプリケーション・サーバーによって異なります。
アプリケーション・ゲートウェイ・サーバーが変更を反映しない
アプリケーション・ゲートウェイ・サーバーでIAMで行った変更が表示されない場合は、次を試してください。
アプリケーション・ゲートウェイは、エンタープライズ・アプリケーションのリソース、認証ポリシー、ヘッダー値などのアイデンティティ・ドメイン情報をキャッシュするため、アイデンティティ・ドメインのエンタープライズ・アプリケーションおよびアプリケーション・ゲートウェイ定義に加えた変更は、アプリケーション・ゲートウェイにすぐに反映されない場合があります。
アプリケーション・ゲートウェイは、エージェントを使用してIAMに接続し、ホストおよびポート情報を収集します。アプリケーション・ゲートウェイを起動すると、そのNGINXサーバーは、この情報で自動的に構成されます。IAMの変更は、エージェントによって定期的にポーリングされます。
/usr/local/nginx/conf/cloudgate.config
ファイルを編集します。次の例に従って、caching
セクションのpolicy
およびheaders
のttl
値を変更し、アプリケーション・ゲートウェイ・サーバーとエージェントの両方を再起動します。"caching" : {
"minimumTtl" : 300,
"headers" : { "ttl": 3600 },
"discovery" : { "ttl": 3600 },
"policy" : { "ttl": 3600},
"tenantKeys" : { "ttl": 86400 }
}
/usr/local/nginx/conf/cloudgate.config
ファイルで、agentConfig
セクションのpollIntervalSecs
値を例のように変更します:"agentConfig": {
"pollIntervalSecs" : 60,
"daemon" : true,
"logLevel" : "warn",
"logFolder" : ""
}
/scratch/oracle/cloudgate/home/bin/cg-stop
/scratch/oracle/cloudgate/home/bin/cg-start
/scratch/oracle/cloudgate/home/bin/agent-stop
/scratch/oracle/cloudgate/home/bin/agent-start
Invalid_sessionメッセージ
アプリケーション・ゲートウェイがIAMと正しく通信できない場合、アプリケーション・ゲートウェイのエラー・ログ・ファイルにinvalid_session
メッセージが見つかります。
次に、error.log
ファイル内のinvalid_session
メッセージの例を示します:
www-authenticate: Bearer error="invalid_session", error_description="Authentication Failure
これは、アプリケーション・ゲートウェイが保護されたリソースに対するクライアント・リクエストを処理する方法が原因である可能性があります。アプリケーション・ゲートウェイでは、NGINX
サブ・リクエストを使用してIAMにリクエストを行います。その後、アプリケーション・ゲートウェイでは、これらのサブ・リクエストが正しく機能するようにLinux NGINX
リゾルバを適切に構成する必要があります。
-
ファイル
/usr/local/nginx/conf/nginx-cg-sub.conf
のリゾルバ設定が正しいIPに設定されていることを確認します。 -
/usr/local/nginx/conf/cloudgate.config
ファイルのテナント名が正しく構成されていることを確認します。
GET 127.0.0.1:53コマンド・エラー
エラー・ログ・ファイルには、エラー番号500に応答するGET 127.0.0.1:53コマンドが含まれます。
アプリケーション・ゲートウェイは内部サーブレットにサブ・リクエストを行うため、アプリケーション・ゲートウェイでは、仮想マシンでポート53
をリスニングする必要があります。
アプリケーション・ゲートウェイ・サーバーは、IPアドレス127.0.0.1
およびポート53
を介して自身と通信する必要があります。
仮想マシン・ソフトウェアでアプリケーション・ゲートウェイを実行している場合は、このポートで、ホストからゲストへのポート転送を構成します。ポート転送ルールの構成を参照してください。
アプリケーション・ゲートウェイ・サーバーがIAMと通信できません
A[[ Gateway ServerがIAMと通信できない場合は、次のステップに従って、PuTTY
などのSSHクライアントおよび次の資格証明を使用して、アプリケーション・ゲートウェイ・サーバーにサインインします。