Поддерживает ли аутентификация Indy 10 Tidwebdav аутентификации пользователей, у которых есть символы Unicode в имени пользователя?

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

Вопрос

Автор веб-сервиса, к которому я пытаюсь подключиться, говорит мне, что имя пользователя, которое я отправляю в модуль веб-сервера Apache Webdav, входит без кодирования = UTF-8 в заголовках или кодирование MIME64 Ожидается для заголовков, и, таким образом, загрузка пользователя пользователя, который может содержать символы Unicode, не принимается и декодируется.

Я хочу знать, могу ли я каким -то образом установить свойство в Tidwebdav, которое изменит то, как оно выполняет кодирование HTTP, таким образом, что позволит аутентификацию имени пользователя, которое содержит символы Unicode, которые не могут быть показаны в простом ASCII. Я подумал, что, может быть, собственность AuthenticationManager может иметь к этому какое -то отношение. В Documetnation Indy 9 он говорит: «Это свойство ничего не делает». Это делает что -то в Indy 10? Похоже, он реализован.

Тайны, которые я еще не понимаю, включают:

(1) Что делает «logintype» (с целочисленным значением) в WebDav и на какие значения я его устанавливает? В настоящее время код, который я установил на 3.

(2) Нужно ли навязать кодирующие параметры с помощью hoforceencodeparams?

(3) Как мне осмотреть заголовки в форме, которую удаленная сторона увидит их?

Обновление: как говорит Реми, аутентификация NTLM поддерживает символы Unicode. Я также обнаружил, что вы можете использовать кодируемые строки Unicode UTF8 (Base64) в базовой аутентификации, в форме «Имя пользователя: пароль».

Это было полезно?

Решение

Цель TIdAuthenticationManager это сохранить кэш параметров аутентификации, используется для успешного входа в конкретные URL -адреса. Больше ничего. TIdHTTP не использует этот кэш во время аутентификации, но вы можете использовать его самостоятельно в OnSelectAuthentication а также OnAuthentication События, если это необходимо.

Какая схема аутентификации фактически используется в этой ситуации? В каком заголовке (ы) модуль WebDAV ожидает указан кодировки символа? В Indy 10 классы NTLM поддерживают строки Unicode во время хэширования, но они используют UTF-16, а не UTF-8.

Может ли автор Webdav предоставить больше информации о том, чего он на самом деле ожидает от вас?

Чтобы ответить на другие вопросы:

(1) Какой «логинтип» вы имеете в виду? В Инди нет такого свойства или параметра.

(2) Hoforceencodeparams применяется только при вызове post () для отправки объекта TStrings для запросов «Application/XWW-Form-UrlencoDed». Это не влияет на аутентификацию.

(3) Чтобы увидеть, какие данные передаются вперед и назад через соединение, вы можете подключить TIdLog... компонент, такой как TIdLogFile или же TIdLogEvent, в Intercept имущество. Или иначе используйте внешний пакет, такой как Wireshark.

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