Azure Webアプリで実行するNode.jsベースのWebアプリケーションを作成しました。これをAzure Active Directory認証の背後に置きました。 「App Service Authentication」をアクティブ化した後、ログインプロセスは正常に機能しますが、アプリに戻ると、HTTP 431「Request Header Fields Too Large」を返すだけです。
私のアプリではないことを検証するために、Node.jsのAzure Webアプリのサンプルを確認しました。AADをアクティブにすると、これでも431が返されます。
再現手順:
結果:ブラウザーでWebアプリのURLを開くと、ログインプロセスが表示され、プロセスに従ってすべてが正常に動作しているように見え、AADがアプリケーションに戻りますが、その時点でHTTP 431が返されます。
さらなるテスト:
何か案は?何か不足していますか?
ヘッダーに8KBのハードキャップを使用するノードの最近のバージョンには制限があるため、これは既知の問題です。 EasyAuthはリクエストにいくつかの非常に大きなヘッダーを追加します。これにより、ノードコンテナーはミドルウェアコンテナーによって行われたリクエストを400で拒否する可能性があります。詳細については、こちらをご覧ください:アプリの設定WEBSITE_AUTH_DISABLE_IDENTITY_FLOWをtrueに設定することで軽減できます。これにより、リクエストに追加した最大のヘッダーの1つが削除されます。このヘッダーは通常、.NET FrameworkアプリとAzure Functionsアプリでのみ使用されるため、この設定は安全です。
それでも問題が発生する場合は、NodeJS 12バージョンを試すか、ヘッダーサイズパラメーターを大きくしてください:node server.js --max-http-header-size 81000