Поддерживает ли indy 10 TIdWebDav аутентификацию пользователей, у которых в имени пользователя есть символы Юникода? - PullRequest
1 голос
/ 17 марта 2011

Автор веб-службы, к которой я пытаюсь подключиться, сообщает, что имя пользователя, которое я отправляю в модуль webdav веб-сервера Apache, вводится без кодировки = utf-8 в заголовках илиэта кодировка mime64 ожидается для заголовков, и, следовательно, идентификатор пользователя загружаемого пользователя, который может содержать символы Юникода, не принимается и не декодируется.

Что я хочу знать, могу ли я как-то установить свойство вTidWebDAV, который изменит способ кодирования http, что позволит аутентифицировать имя пользователя, содержащее символы Юникода, которые нельзя отобразить в простом ascii.Я подумал, что, возможно, свойство AuthenticationManager как-то связано с этим.В документации 9 indy, это говорит, что "это свойство ничего не делает".Это делает что-то в Indy 10?Похоже, что оно реализовано.

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

(1) Что делает тип входа (с целочисленным значением) в webdav, и какие значения я устанавливаюэто к?В настоящее время код, который у меня установлен, равен 3.

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

(3) Как проверить заголовки в виде удаленногосторона увидит их?

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

1 Ответ

2 голосов
/ 18 марта 2011

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

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

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

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

(1) На какой тип логина вы ссылаетесь?В Indy такого свойства или параметра нет.

(2) hoForceEncodeParams применяется только при вызове Post () для отправки объекта TStrings для запросов application / x-www-form-urlencoded.Это не влияет на аутентификацию.

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

...