HTTP 400 Bad Request Fehler in Connections 6 CR 6 mit SPNEGO beheben

HTTP 400 Bad Request Fehler in Connections 6 CR 6 mit SPNEGO beheben

400 Bad Request Fehler bei einem Teil der Connections-Nutzer, teilweise im Browser, aber bei manchen auch dem Desktop-Connector: Dies war in einer Connections 6 CR 6 Umgebung festzustellen, nachdem der IBM HTTP Server von Windows auf Linux migriert wurde. In diesem Zuge fand auch ein Re-Factoring statt, darunter die Automatisierung mittels Ansible. Dass der Fehler nicht bei allen Nutzern auftrat, erschwerte die Fehlersuche. Ebenso schien es nicht möglich, das Problem mit Testbenutzern zu reproduzieren.

SPNEGO Headergröße

Wie sich herausstellte, wurde das Problem durch SPNEGO verursacht. Dies kam zum Einsatz, um Single-Sign-On für die Benutzer bereitzustellen. SPNEGO setzt Header von bis zu 12392 bytes Größe. Diese überschreitet den Standardwert von 8k, der sowohl von Apache2 als auch dem darauf basierten IHS zum Einsatz kommt.

Doch warum betraf das Problem dann nicht alle Benutzer? Nun, SPNEGO setzt dort auch die Mitgliedsgruppen des Benutzers. In je mehr (langen) Gruppen der Benutzer Mitglied ist, um so länger wird somit auch der Header. Einzelne Personen überschreiten somit das Limit, wogegen es bei anderen noch ausreicht.

Header vergrößern

Der 400 Bad Request Fehler lässt sich mit einer einzigen Konfigurationszeile lösen. Hierzu wird das Limit auf 16k erhöht (12k mit etwas Puffer):

LimitRequestFieldSize 16376

Sie muss in der httpd.conf eingefügt werden. Diese befindet sich standardmäßig im Pfad /opt/IBM/HTTPServer/conf. Nach einem Neustart greifen die Änderungen, sodass sich die 400 Fehler im Accesslog reduzieren sollten. Um dies live zu beobachten, genügt ein Grep auf die jeweilige Logdatei. Wird Logrotate genutzt, beispielsweise wie folgt:

tail -f logs/access_2020_03_24.log | grep " 400 "

Leave a Reply