Silent-monk has asked for the wisdom of the Perl Monks concerning the following question:

Greetings fellow monks, I've been around the monastery for a while and always found wisdom in previous posts, but this time I can't find anything helpful either in the monastery or elsewhere. I am trying to use WWW::Mechanize to connect to a page stored in a password protected directory. That directory of course is not hosted on a local server but on a hosting service's server. When I try to get the page the response header sent back by the server is:
Client-Warning : Unsupported authentication scheme 'ntlm' Title : You are not authorized to view this page
The doc for LWP::Authen::Ntlm states that it is automatically invoked when you use LWP, and since WWW::Mechanize is a subclass of LWP it should do the same, right ? I tried adding "use LWP::Authen::Ntlm;" in my script to make sure it is loaded but then the response header changes to:
Client-Warning : Unsupported authentication scheme 'negotiate' Title : You are not authorized to view this page
I'm using these modules to try to establish my connection. Am I missing one ?
use WWW::Mechanize; use LWP::Debug qw(+); use LWP::Authen::Ntlm;
I am using ActiveState's version 5.8.7 on a windows 2000 box. The page is on a windows nt machine running Microsoft-IIS/5.0. Typing upgrade in PPM tells me that my modules are all up to date. -- Addition I am using Mark Bush's module, so that souldn't be the issue. As noted by Asim, I fogot to add my code. here it is:
#! C:/perl/bin use warnings; use strict; use WWW::Mechanize; use LWP::Debug qw(+); use LWP::Authen::Ntlm; my $usr=""; my $pw=""; my $url='http://www.mysite.com'; my $robot=WWW::Mechanize->new(autocheck => 0, keep_alive=>1); $robot->credentials($url, '', $usr, $pw); $robot->get("$url/intranetadmin/index.php");; my $response = $robot->response(); for my $key ( $response->header_field_names() ) { print $key, " : ", $response->header( $key ), "\n"; }
Many thanks ! Benoit

Replies are listed 'Best First'.
Re: NTLM authentification with WWW::Mechanize fails
by Ieronim (Friar) on Jun 29, 2006 at 19:10 UTC
    The LWP::Authen::Ntlm documentation says:

    The module takes advantage of the Authen::NTLM module by Mark Bush. Since there is also another Authen::NTLM module available from CPAN by Yee Man Chan with an entirely different interface, it is necessary to ensure that you have the correct NTLM module.

    Check the documentation of your Authen::NTLM module.

    If your LWP::Authen::Ntlm was installed correctly, you must be able to load the page using the credentials method of WWW::Mechanize object.

    HTH :)

Re: NTLM authentification with WWW::Mechanize fails
by Asim (Hermit) on Jun 29, 2006 at 17:40 UTC

    Someone else might have an easy answer, yet what leaps out at me, when I read this, is that we have no code. Nor do we have a way to ensure you are, indeed, sending the correct auth data to the Web Server. As you might imagine, this makes it difficult to help you debug.

    Can you write and run a simple "test case", just enough code to test out the NTLM auth bits? If that breaks, feel free to edit your post with the code, removing the actual login and password info, of course.

    How's that sound?

    ----Asim, known to some as Woodrow.