2010-11-25 67 views
3

une question similaire a été posée à question 494120, mais à mon humble avis n'a pas vraiment répondu ...Accès à un sharepoint en utilisant Perl et webdav

Je veux télécharger des fichiers vers un sharepoint en utilisant Perl/WebDAV (à partir d'un hôte Win32). Pour cela, je dois m'authentifier avec KERBEROS sur le serveur. Après avoir fait des recherches sur Google pendant des heures et essayé différentes approches, je ne suis pas en mesure d'ouvrir une connexion. Code actuel est le suivant:

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"); 

Quand vous faites le $ d-> ouvert (...), je reçois toujours "Impossible d'ouvrir $ url:. non autorisée Negotiate". Donc, évidemment, l'authentification de base ne fonctionne pas.

Quelqu'un pourrait-il me diriger vers le bon chemin, s'il vous plaît? Je ne suis pas fixé à l'aide de WebDAV, tout autre mécanisme me conviendrait aussi bien. Je veux juste le faire fonctionner ...


Edit 1
Lorsque vous utilisez LWP avec Authen::NTLM (comme suggéré par Madhur) ne fonctionne pas non plus. Il en résulte un 500 internal server error sur IIS ainsi que sur Apache. Puisque la même erreur se produit sur deux serveurs Web différents (avec deux implémentations NTLM différentes), je suppose qu'il doit y avoir un problème dans le module Authen::NTLM.

Looking at the implementation de Authen::NTLM il me semble que le code est inverse un peu conçu et mis en œuvre ni basée sur un cahier des charges, ni est-il vraiment configurable. Ce qui pose la question pourquoi the specification n'a pas été utilisé pour implémenter le module ...

Utilise NTLM avec Perl tel un cas d'utilisation exotique?


Edit 2
Basé sur la suggestion de Madhur, j'ai essayé d'accéder au Sharepoint avec Curl. Cela marche. Mais renifler les messages NTLM de Curl et ceux envoyés par Perl me montre que le format du message est en quelque sorte différent.

Répondre

0

Au lieu d'utiliser WebDAV. Je vous suggère d'utiliser des services Web hors de la boîte.

Cela donne aperçu sur la façon d'utiliser les services web sharepoint PERL:

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

http://shareperl.blogspot.com/

Et voici le code .NET pour télécharger le fichier en utilisant le service Web: http://www.oriolardevol.com/Article/Details/3

La conversion en code PERL vous est laissée comme il y a plusieurs années depuis que j'ai utilisé PERL :)

+0

Merci pour votre réponse. Malheureusement, l'utilisation de 'LWP' avec' Authen :: NTLM' provoque une 'erreur interne du serveur 500' sur IIS ainsi que sur Apache. Je suppose qu'il ya une erreur dans l'implémentation de 'Authen :: NTLM' ... – eckes

+0

J'ai quelques suggestions, peut être utile: 1. Essayez d'utiliser l'option de débogage utilisez LWP :: Debug qw (+); 2. Pouvez-vous utiliser Curl pour gérer l'authentification http://en.wikipedia.org/wiki/CURL 3. consultez http://stackoverflow.com/questions/1013721/how-do-i-integrate-ntlm-authentication -with-perls-soaplite-module 4. http://www.perlmonks.org/?node_id = 719995 –

+0

@eckes: Ok. Premièrement, je ne sais pas comment fonctionne cet utilisateur. Impossible de le trouver dans la FAQ aussi. Franchement, je ne connais pas CURL ou PERL. Je suis le gars de sharepoint. Si CURL travaille pour vous, allez-y et utilisez-le. Ping me incase vous avez des questions sur sharepoint ou son utilisation connexe. –