使用perl和webdav访问sharepoint

时间:2010-11-25 13:03:22

标签: perl sharepoint webdav kerberos ntlm

question 494120中提出了类似的问题,但恕我直言并没有真正回答......

我想使用perl / WebDAV(来自Win32主机)将文件上传到sharepoint。要实现这一点,我需要在服务器上使用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->打开(...)时,我总是得到“无法打开$ url:未经授权。协商”。所以,显然基本身份验证不起作用。

有人能指出我正确的道路吗?我不是固定使用WebDAV,任何其他机制也适合我。只是想让它发挥作用......


编辑1
使用LWPAuthen::NTLM时(由Madhur建议)也不起作用。它在IIS和Apache上产生500 internal server error。由于在两个不同的Web服务器(具有两个不同的NTLM实现)上发生相同的错误,我想在Authen::NTLM模块中存在问题。

Authen::NTLM的{​​{3}}在我看来,代码是有点逆向工程的,既不是基于规范实现的,也不是真正可配置的。是什么导致了Looking at the implementation未用于实现模块的问题...

使用NTLM和Perl这样一个奇特的用例吗?


编辑2
根据Madhur的建议,我尝试使用Curl访问Sharepoint。这有效。但是嗅探Curl的NTLM消息和Perl发送的消息告诉我,消息格式有些不同。

1 个答案:

答案 0 :(得分:0)

而不是使用WebDAV。我建议您使用开箱即用的Web服务。

这概述了如何在PERL中使用sharepoint Web服务:

http://www.squish.net/log/2008/10/11/perl-sharepoint/

http://shareperl.blogspot.com/

这是使用Web服务上传文件的.NET代码: http://www.oriolardevol.com/Article/Details/3

将其转换为PERL代码由您使用PERL后的几年留给您:)