Azure ADサブプロバイダーを使用してログインしようとしたときに「The size of the request headers is too long」エラーが発生する


説明

ユーザーがAzure ADの複数のセキュリティ グループのメンバーである場合、次のエラーが発生して、Azure ADサブ プロバイダーを使用した認証の試行が失敗する可能性があります。

Bad Request - Request Too Long
HTTP Error: 400: The size of the request headers is too long.

全ての環境向けのソリューション

以下のオプションのいずれかを検討してください。

  1. 一部のユーザーが所属するAzure ADのセキュリティ グループの数を減らします(Cookieのサイズ上限は約32KBです)。
  2. このドキュメント(SSO 構成を使用して SAML アプリケーションのトークンにグループ要求を追加する)に記載されているように、Azureアプリケーションをセキュリティ グループからアプリケーションに割り当てられているグループを使用するように切り替え、ホワイトリスト化されている特定のADグループだけが返されるようにします。
  3. Sitecore Identity ServerとAzure ADを統合し、不要なセキュリティグループをフィルタリングするための独自のモジュールプラグインを作成します。

オンプレミス向けの解決策

本事象を解決するには、次の解決法を検討してください。

  1. 次のコード サンプルの修正を、Identity Serverと、Identity Serverの前に配置されているすべてのロード バランサー、ゲートウェイ、およびネットワーク インフラストラクチャに適用します:
    <system.web>
    .....
    <httpRuntime maxRequestLength="2097152" />
    </system.web>
  2. HTTP 要求に対する HTTP 400 Bad Request (Request Header too long) 応答に記載されている説明に従って、レジストリ値を変更します。
  3. Identity Serverをホスティングしているサーバーを再起動します。

Azure Webアプリケーション向けの解決策

Azureデプロイメントの場合、レジストリへの書き込みアクセスがブロックされており、レジストリ値にアクセスできないというAzureの制限があります。このAzureの制限を解決するには、貴社のIdentity ServerをApp Serviceから、それらのレジストリ キーにアクセスできるWindows Serverの仮想マシンに移動してください。