Commons HTTP Client - kerberos Token во время переговоров имеет символы r n (канализация возврата возврата)

StackOverflow https://stackoverflow.com/questions/3018148

Вопрос

Я пытаюсь использовать 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top