Frage

Ich versuche, Jakarta Commons HTTP-Client zu verwenden. Tun Kerberos-Authentifizierung mit einem Server zu kommunizieren. Authentifizierung schlägt immer fehl. Am Graben tiefer fand ich heraus, dass der Kerberos-Token-Header CRLF Zeichen darin, das ist die eigentliche Ursache des Problems hat. Warum muss es \ r \ n Zeichen und warum ist das ein Problem?

War es hilfreich?

Lösung

\ r \ n-Zeichen in den Kerberos-Token ist ein Problem, weil \ r eine HTTP-Steuerzeichen ist. Das bedeutet im Wesentlichen, dass der Server sieht nur die erste Zeile des Token und ignoriert daher still andernfalls Authentifizierung. Um es noch schlimmer, die nächsten Größen wie die Token machen werden als neue Header behandelt und nicht gut formatiert werden. So HTTP-Server wird ausflippen.

Der Grund, warum dies passiert ist, weil RFC 1521-Spezifikation besagt, dass Base64-Codierung Zeilenlänge auf 76 Zeichen beschränkt ist. Daher \ r \ n Zeichen. Und das funktioniert nicht gut mit dem HTTP-Protokoll. Diese Oberflächen nur, wenn Sie die Kerberos-Token verwenden, die Base64-kodiert sind.

So Lösung ist abzustreifen out \ r \ n Zeichen aus dem Kerberos-Base64 codierten Token-Header. Auch ältere Versionen von Apache Commons Codec nicht Limit base64 auf 76 Linien kodiert und somit kein Problem. Also, wenn Sie Haken in Codierung haben, entfernen die problematischen Zeichen aus. Wenn Sie nicht dann verwenden ältere Version von Apache Commons Code mit commons-Httpclient.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top