Pourquoi ne pas mon LWP::UserAgent informations d'identification de l'œuvre?
J'essaye d'accéder à un fichier protégé. Serveur utilise l'authentification digest - je peux voir à partir de l'imprimé de réponse.
Voici un exemple de code:
use LWP;
use strict;
my $url = 'http://somesite.com/aa/bb/cc.html';
my $username = 'scott';
my $password = 'tiger';
my $browser = LWP::UserAgent->new('Mozilla');
$browser->credentials("http://somesite.com:80","realm-name",$username=>$password);
my $response=$browser->get($url);
print $response->content;
Nom de l'empire, je l'ai eu à partir de la fenêtre pop-up que j'obtiens quand j'essaie d'accéder à cette ressource à partir du navigateur. Même nom d'utilisateur et un mot de passe qui fonctionne très bien dans le navigateur et je suis capable de voir le contenu, mais quand je lance le script ci-dessus, il dit toujours 401 Authorization required
.
Comment LWP travail?
Dois-je la demander LWP pour envoyer hachage MD5 (digest) du nom d'utilisateur et un mot de passe ou est-ce comme à l'interne, il vérifie l'authentification à utiliser et envoie le correspondant (de base/digest) de l'envoi des informations d'identification.
Mes questions sont les
- Comment puis-je définir LWP pour qu'il envoie un recueil de nom d'utilisateur et le mot de passe?
- Que si le serveur est à l'aide de windows protocole d'authentification NTLM? Comment dois-je procéder à une telle situation?
toute aide rapide est fortement appréciée !
"http://somesite.com:80"
.Il n'est pas de port, mais, http:// doit être supprimé - merci Ivan
OriginalL'auteur Ram | 2009-11-25
Vous devez vous connecter pour publier un commentaire.
Considérons l'extrait suivant de la
LWP::UserAgent
du module de documentation:Changement
à
Vous êtes les bienvenus!
OriginalL'auteur
HTTP GET Authed Demande peut également être faite de la manière suivante
OriginalL'auteur
Lorsque vous avez ces sortes de questions, utiliser un HTTP sniffer pour regarder la transaction, de sorte que vous pouvez voir les en-têtes de votre programme d'envoi. Dans ce cas, vous êtes probablement ne pas envoyer les informations d'identification à tous depuis le code d'état HTTP 401 est, au lieu de 403. Que signifie généralement que vous avez fait une erreur avec les informations d'identification, comme gbacon notes dans sa réponse.
OriginalL'auteur
J'ai résolu ce problème par l'installation de perl-NTLM.noarch sur Red Hat 7.
OriginalL'auteur