Commons HTTP Client - kerberos Token во время переговоров имеет символы r n (канализация возврата возврата)
-
26-09-2019 - |
Вопрос
Я пытаюсь использовать Jakarta Commons HTTP-клиент. Делая аутентификацию Kerberos для связи с сервером. Аутентификация всегда терпит неудачу. На копании глубже я обнаружил, что заголовок токена Kerberos имеет Reft Repeat Line Feed Chysices в нем, что является корневой причиной проблемы. Почему у него есть r n символов и почему это проблема?
Решение
R n символов в токене Kerberos - это проблема, потому что R - это символы управления HTTP. Это, по сути означает, что сервер видит только первую строку токена и игнорирует отдых, следовательно, неспособность аутентификации. Чтобы ухудшиться, следующие лайки токена рассматриваются как новые заголовки и не будут отформатированы хорошо. Таким образом, HTTP-сервер испугается.
Причина, по которой это происходит, заключается в том, что спецификация RFC 1521 говорит, что длина линии кодирования Base64 ограничена на 76 символов. Отсюда r n символов. И это не работает хорошо с HTTP-протоколом. Это поверхности только в том случае, если вы используете токены Kerberos, которые кодируются Base64.
Таким образом, решение этого состоит в том, чтобы разделить символы R n из кодированного токена токена R n. Кроме того, старые версии Apache Commons Codec не ограничивают базовую кодировку на 76 строк и, следовательно, не проблема. Поэтому, если у вас есть крючок в кодировке, разделите проблемные символы. Если вы не используете старую версию Apache Commons Code с Commons-httpClient.