perl - 使用 perl 和 webdav 访问共享点

标签 perl sharepoint webdav kerberos ntlm

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
LWPAuthen::NTLM 一起使用时(如 Madhur 所建议)也不起作用。它会在 IIS 和 Apache 上导致 500 内部服务器错误。由于在两个不同的 Web 服务器(具有两个不同的 NTLM 实现)上发生相同的错误,我猜 Authen::NTLM 模块中一定有问题。

Looking at the implementation Authen::NTLM 在我看来,代码有点像逆向工程,既不是基于规范实现的,也不是真正可配置的。为什么会出现这个问题 the specification未用于实现模块...

将 NTLM 与 Perl 一起使用是否是一种奇特的用例?


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

最佳答案

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

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

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

http://shareperl.blogspot.com/

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

自从我使用 PERL 以来,将它转换为 PERL 代码留给你了 :)

关于perl - 使用 perl 和 webdav 访问共享点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4277340/

相关文章:

perl - 如何在 Perl 中获取全局变量值?

perl - 控制 perl 脚本的 CPU 使用率?

javascript - 让 Javascript 在 SharePoint 2010 上运行时遇到问题

python - 在 Linux 上使用 Webdav 从 SkyDrive 获取文件 *无需* 安装

c# - 直接在 Word 中打开位于 webDAV 服务器中的 .doc

perl - 如何使用 Net::OpenID::Consumer 和 Yahoo OpenID 避免编码错误?

arrays - 在 Perl 中,如何将散列数组转换为值数组?

javascript - Sharepoint 自定义 Web 部件启动脚本

c# - 在 SharePoint 中检索作为声明用户的友好名称

macos - IIS 7.5 上带有 SSL(自签名)的 WebDAV - Windows 无法连接 - Mac 只能以只读方式挂载