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


説明

ユーザーがAzure Active Directory (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. 以下のドキュメントに記載されている方法にしたがって、Azureアプリケーションをセキュリティ グループからアプリケーションに割り当てられているグループを使用するように切り替え、ホワイトリスト化されている特定のADグループだけが返されるようにします。
    SSO 構成を使用して SAML アプリケーションのトークンにグループ要求を追加する
  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の仮想マシンに移動してください。