OVH Cloud OVH Cloud

Authentification IIS et LWP

7 réponses
Avatar
yann78000
Bonjour,

Je cherche à écrire un script me permettant de faire un GET HTTP sur
un serveur web ( IIS ).
Le problème est que les utilisateurs anonymes ne sont pas autorisés
sur ce serveur. Après avoir jeter un oeil sur plusieurs groupes de
discussion il me semble que l'authentification IIS/Microsoft est gérée
par un sous module de LWP : NTLM.
Malgré plusieurs tentatives, je reste bloqué sur une réponse HTTP
401.2 du serveur web.

ci-dessous le script :
----------------------
use LWP::Debug qw(+);
use LWP::UserAgent;

my $ua = LWP::UserAgent->new(
agent=>'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)',
keep_alive=>'1'
);

my $host = '192.168.0.1:80';
my $user = 'DNS01\\user';
my $pass = 'pass';

$ua->credentials($host, '', $user, $pass);

my $req = new HTTP::Request GET =>
"http://192.168.0.1/test/index.asmx";
my $res = $ua->request( $req );

if ( $res->is_success() ) {
# Success !
print ":-D";
}
else {
# Failure
print ":-(";
}
----------------------

et en réponse j'ai :

----------------------
LWP::UserAgent::new: ()
LWP::UserAgent::request: ()
LWP::UserAgent::send_request: GET http://192.168.0.1/test/index.asmx
LWP::UserAgent::_need_proxy: Not proxied
LWP::Protocol::http::request: ()
LWP::Protocol::collect: read 811 bytes
LWP::Protocol::collect: read 3620 bytes
LWP::UserAgent::request: Simple response: Unauthorized
:(
----------------------

Là je cale. Je suis preneur de tout conseils, solutions, trucs et
astuces.

Merci d'avance
Yann

7 réponses

Avatar
dominix
"Yann78" a écrit dans le message de news:

Bonjour,

Je cherche à écrire un script me permettant de faire un GET HTTP sur
un serveur web ( IIS ).
Le problème est que les utilisateurs anonymes ne sont pas autorisés
sur ce serveur. Après avoir jeter un oeil sur plusieurs groupes de
discussion il me semble que l'authentification IIS/Microsoft est gérée
par un sous module de LWP : NTLM.
Malgré plusieurs tentatives, je reste bloqué sur une réponse HTTP
401.2 du serveur web.

ci-dessous le script :
----------------------
use LWP::Debug qw(+);
use LWP::UserAgent;

my $ua = LWP::UserAgent->new(
agent=>'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)',
keep_alive=>'1'
);

my $host = '192.168.0.1:80';
my $user = 'DNS01user';
my $pass = 'pass';

$ua->credentials($host, '', $user, $pass);


les credential c'est capricieux,
essaye plutot d'inserer une methode get_basic_credentials

my $DEBUG=0;
{
package MyAgent;
@ISA = qw(LWP::UserAgent);

sub get_basic_credentials {
my ( $self, $realm, $uri ) = @_;
print STDERR "ok proceeding $realm, $urin" if $DEBUG;
return ( 'profil', 'password' );
}
}
my $ua = MyAgent->new;






Merci d'avance
Yann


--
dominix

Avatar
yann78000
"dominix" wrote in message news:<425dd8fd$0$27275$...

les credential c'est capricieux,
essaye plutot d'inserer une methode get_basic_credentials

my $DEBUG=0;
{
package MyAgent;
@ISA = qw(LWP::UserAgent);

sub get_basic_credentials {
my ( $self, $realm, $uri ) = @_;
print STDERR "ok proceeding $realm, $urin" if $DEBUG;
return ( 'profil', 'password' );
}
}
my $ua = MyAgent->new;


J'ai essayé sans grand résultat, mais lorsque je lis la doc de
get_basic_credentials :

This is called by request() to retrieve credentials for documents
protected by Basic or Digest Authentication.

Or La seule authentification autorisé est Integrated Windows
Authentification.

J'ai quand même tenté les méthodes authorization_basic de
HTTP::Request ainsi que authorization_basic de HTTP::Headers ( sans
vraiment comprendre là ) ... quoi qu'il en soit ça ne répondait pas au
problème.

Bref ... marche pas

Merci de ta réponse en tout cas
Yann

Avatar
DoMinix
Yann78 wrote:
"dominix" wrote in message news:<425dd8fd$0$27275$...


les credential c'est capricieux,
essaye plutot d'inserer une methode get_basic_credentials

my $DEBUG=0;
{
package MyAgent;
@ISA = qw(LWP::UserAgent);

sub get_basic_credentials {
my ( $self, $realm, $uri ) = @_;
print STDERR "ok proceeding $realm, $urin" if $DEBUG;
return ( 'profil', 'password' );
}
}
my $ua = MyAgent->new;



J'ai essayé sans grand résultat, mais lorsque je lis la doc de
get_basic_credentials :

This is called by request() to retrieve credentials for documents
protected by Basic or Digest Authentication.

Or La seule authentification autorisé est Integrated Windows
Authentification.

J'ai quand même tenté les méthodes authorization_basic de
HTTP::Request ainsi que authorization_basic de HTTP::Headers ( sans
vraiment comprendre là ) ... quoi qu'il en soit ça ne répondait pas au
problème.

Bref ... marche pas

Merci de ta réponse en tout cas
Yann


ton login tu le met de la forme "DOMAINusername" ?

--
dominix


Avatar
yann78000
DoMinix wrote in message news:<42654490$0$19751$...
Yann78 wrote:
"dominix" wrote in message news:<425dd8fd$0$27275$...


les credential c'est capricieux,
essaye plutot d'inserer une methode get_basic_credentials

my $DEBUG=0;
{
package MyAgent;
@ISA = qw(LWP::UserAgent);

sub get_basic_credentials {
my ( $self, $realm, $uri ) = @_;
print STDERR "ok proceeding $realm, $urin" if $DEBUG;
return ( 'profil', 'password' );
}
}
my $ua = MyAgent->new;



J'ai essayé sans grand résultat, mais lorsque je lis la doc de
get_basic_credentials :

This is called by request() to retrieve credentials for documents
protected by Basic or Digest Authentication.

Or La seule authentification autorisé est Integrated Windows
Authentification.

J'ai quand même tenté les méthodes authorization_basic de
HTTP::Request ainsi que authorization_basic de HTTP::Headers ( sans
vraiment comprendre là ) ... quoi qu'il en soit ça ne répondait pas au
problème.

Bref ... marche pas

Merci de ta réponse en tout cas
Yann


ton login tu le met de la forme "DOMAINusername" ?


sous windows oui, dans le script ça serait plutôt "DOMAINusername"



Avatar
DoMinix
Yann78 wrote:
"dominix" wrote in message news:<425dd8fd$0$27275$...


les credential c'est capricieux,
essaye plutot d'inserer une methode get_basic_credentials

my $DEBUG=0;
{
package MyAgent;
@ISA = qw(LWP::UserAgent);

sub get_basic_credentials {
my ( $self, $realm, $uri ) = @_;
print STDERR "ok proceeding $realm, $urin" if $DEBUG;
return ( 'profil', 'password' );
}
}
my $ua = MyAgent->new;



J'ai essayé sans grand résultat, mais lorsque je lis la doc de
get_basic_credentials :

This is called by request() to retrieve credentials for documents
protected by Basic or Digest Authentication.

Or La seule authentification autorisé est Integrated Windows
Authentification.

J'ai quand même tenté les méthodes authorization_basic de
HTTP::Request ainsi que authorization_basic de HTTP::Headers ( sans
vraiment comprendre là ) ... quoi qu'il en soit ça ne répondait pas au
problème.

Bref ... marche pas

Merci de ta réponse en tout cas
Yann


est tu sur que le serveur demande une authentication NTLM ?
le voit tu (avec tcpdump) ? voit tu les headers du serveur ?

NOTE : dans LWP::Authen::Ntlm il est dit
Note that you cannot use the HTTP::Request object's
authorization_basic() method to set the credentials.

quelle version de LWP ?
as tu essaye Authen::NTLM::HTTP ?

--
dominix


Avatar
DoMinix
Yann78 wrote:
DoMinix wrote in message news:<42654490$0$19751$...

Yann78 wrote:

"dominix" wrote in message news:<425dd8fd$0$27275$...



les credential c'est capricieux,
essaye plutot d'inserer une methode get_basic_credentials

my $DEBUG=0;
{
package MyAgent;
@ISA = qw(LWP::UserAgent);

sub get_basic_credentials {
my ( $self, $realm, $uri ) = @_;
print STDERR "ok proceeding $realm, $urin" if $DEBUG;
return ( 'profil', 'password' );
}
}
my $ua = MyAgent->new;



J'ai essayé sans grand résultat, mais lorsque je lis la doc de
get_basic_credentials :

This is called by request() to retrieve credentials for documents
protected by Basic or Digest Authentication.

Or La seule authentification autorisé est Integrated Windows
Authentification.

J'ai quand même tenté les méthodes authorization_basic de
HTTP::Request ainsi que authorization_basic de HTTP::Headers ( sans
vraiment comprendre là ) ... quoi qu'il en soit ça ne répondait pas au
problème.

Bref ... marche pas

Merci de ta réponse en tout cas
Yann


ton login tu le met de la forme "DOMAINusername" ?



sous windows oui, dans le script ça serait plutôt "DOMAINusername"


et en l'occurence tu as raison mais ce n'est pas pareil que precedement
'DOMAINuser' << ca c'est pas bon.

--
dominix




Avatar
yann78000
DoMinix wrote in message news:<42673aac$0$20433$...

est tu sur que le serveur demande une authentication NTLM ?
le voit tu (avec tcpdump) ? voit tu les headers du serveur ?

NOTE : dans LWP::Authen::Ntlm il est dit
Note that you cannot use the HTTP::Request object's
authorization_basic() method to set the credentials.

quelle version de LWP ?
as tu essaye Authen::NTLM::HTTP ?


La version LWP : c'est la version standard de la release activestate
5.8.6.811
J'ai fait une tentative de compr?hension de la doc Authen::NTLM::HTTP
... et je n'ai pas compris grand chose.

Mais, j'ai avanc? et j'arrive ? m'authentifier avec le user admin
local du serveur o? IIS est install? ... mais pas avec un user
classique du domaine.
Sachant que sous IE je peux m'authentifier avec ce m?me user du
domaine.
Tout ?a avec LWP et la m?thode credentials

Yann