【发布时间】:2010-11-25 13:03:21
【问题描述】:
在question 494120 中提出了类似的问题,但恕我直言并没有真正回答...
我想使用 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 所建议的那样)也不起作用。它会在 IIS 和 Apache 上生成 500 internal server error。由于相同的错误发生在两个不同的 Web 服务器(具有两个不同的 NTLM 实现)上,我猜Authen::NTLM 模块中肯定有问题。
Looking at the implementation of Authen::NTLM 在我看来,代码有点逆向工程,既不是基于规范实现的,也不是真正可配置的。为什么不使用the specification 来实现模块的问题是什么...
将 NTLM 与 Perl 一起使用是一种奇特的用例吗?
编辑 2
根据 Madhur 的建议,我尝试使用 Curl 访问 Sharepoint。这行得通。但是嗅探 Curl 的 NTLM 消息和 Perl 发送的消息,我发现消息格式有些不同。
【问题讨论】:
标签: perl sharepoint webdav kerberos ntlm