аналогичный вопрос был задан в вопросе 494120 , но на ИМХО ответа не было ...
Я хочу загрузить файлы на sharepoint с помощью perl / WebDAV (с хоста Win32). Для этого мне нужно пройти аутентификацию с помощью KERBEROS на сервере. После поисков в течение нескольких часов и пробуя разные подходы, я не могу открыть соединение. Текущий код такой:
my $agent = HTTP::DAV::UserAgent->new(keep_alive=>1);
$agent->agent('Agent');
$agent->timeout(1000);
my $d = HTTP::DAV->new(-useragent => $agent);
$d->credentials( -user=>$user,-pass =>$pass, -url =>$url);
$d->open( -url=>$url ) or die("Couldn't open $url: " .$d->message . "\n");
При выполнении $ d-> open (...) я всегда получаю сообщение «Не удалось открыть $ url: неавторизовано. Переговоры». Итак, очевидно, что базовая аутентификация не работает.
Может ли кто-нибудь указать мне правильный путь, пожалуйста? Я не привязан к использованию WebDAV, любой другой механизм подойдет мне. Просто хочу, чтобы это заработало ...
Редактировать 1
При использовании LWP
вместе с Authen::NTLM
(как предлагает Madhur ) также не работает. Это приводит к 500 internal server error
на IIS, а также на Apache. Поскольку одна и та же ошибка возникает на двух разных веб-серверах (с двумя разными реализациями NTLM), я предполагаю, что в модуле Authen::NTLM
должна быть проблема.
Глядя на реализацию из Authen::NTLM
, мне кажется, что код является своего рода обратным инжинирингом и не реализован на основе спецификации и не является действительно конфигурируемым. Что поднимает вопрос, почему спецификация не использовалась для реализации модуля ...
Является ли использование NTLM вместе с Perl таким экзотическим вариантом использования?
Редактировать 2
По предложению Мадхура я попытался получить доступ к Sharepoint с помощью Curl. Это работает. Но прослушивание сообщений NTLM от Curl и сообщений, отправленных Perl, показывает мне, что формат сообщений несколько отличается.