SYNOPSIS

    use Mail::IMAPClient;
    use Authen::NTLM;
    my $imap = Mail::IMAPClient->new(Server=>'imaphost');
    ntlm_user($username);
    ntlm_password($password);
    $imap->authenticate("NTLM", Authen::NTLM::ntlm);
    :
    $imap->logout;
    ntlm_reset;
    :

or

ntlmv2(1); ntlm_user($username); ntlm_host($host); ntlm_password($password); :

or

my $ntlm = Authen::NTLM-> new( host => $host, user => $username, domain => $domain, password => $password, version => 1, ); $ntlm-> challenge; : $ntlm-> challenge($challenge);

DESCRIPTION

This module provides methods to use NTLM authentication. It can be used as an authenticate method with the Mail::IMAPClient module to perform the challenge/response mechanism for NTLM connections or it can be used on its own for NTLM authentication with other protocols (eg. HTTP).

The implementation is a direct port of the code from F<fetchmail> which, itself, has based its NTLM implementation on F<samba>. As such, this code is not especially efficient, however it will still take a fraction of a second to negotiate a login on a PII which is likely to be good enough for most situations.

\s-1FUNCTIONS\s0

ntlm_domain()

Set the domain to use in the NTLM authentication messages. Returns the new domain. Without an argument, this function returns the current domain entry.

ntlm_user()

Set the username to use in the NTLM authentication messages. Returns the new username. Without an argument, this function returns the current username entry.

ntlm_password()

Set the password to use in the NTLM authentication messages. Returns the new password. Without an argument, this function returns the current password entry.

ntlm_reset()

Resets the NTLM challenge/response state machine so that the next call to C<ntlm()> will produce an initial connect message.

ntlm()

Generate a reply to a challenge. The NTLM protocol involves an initial empty challenge from the server requiring a message response containing the username and domain (which may be empty). The first call to C<ntlm()> generates this first message ignoring any arguments.

The second time it is called, it is assumed that the argument is the challenge string sent from the server. This will contain 8 bytes of data which are used in the DES functions to generate the response authentication strings. The result of the call is the final authentication string.

If C<ntlm_reset()> is called, then the next call to C<ntlm()> will start the process again allowing multiple authentications within an application.

ntlmv2()

Use NTLM v2 authentication.

\s-1OBJECT\s0 \s-1API\s0

Creates an object that accepts the following options: \*(C`user\*(C', \*(C`host\*(C', \*(C`domain\*(C', \*(C`password\*(C', \*(C`version\*(C'.

challenge [$challenge]

If $challenge is not supplied, first-stage challenge string is generated. Otherwise, the third-stage challenge is generated, where $challenge is assumed to be extracted from the second stage of \s-1NTLM\s0 exchange. The result of the call is the final authentication string.

AUTHOR

David (Buzz) Bussenschutt <[email protected]> - current maintainer Dmitry Karasik <[email protected]> - nice ntlmv2 patch, OO extensions. Andrew Hobson <[email protected]> - initial ntlmv2 code Mark Bush <[email protected]> - perl port Eric S. Raymond - author of fetchmail Andrew Tridgell and Jeremy Allison for SMB/Netbios code

RELATED TO Authen::NTLM…

perl, Mail::IMAPClient, LWP::Authen::Ntlm

HISTORY

1.09 - fix CPAN ticket # 70703 1.08 - fix CPAN ticket # 39925 1.07 - not publicly released 1.06 - relicense as GPL+ or Artistic 1.05 - add OO interface by Dmitry Karasik 1.04 - implementation of NTLMv2 by Andrew Hobson/Dmitry Karasik 1.03 - fixes long-standing 1 line bug L<http://rt.cpan.org/Public/Bug/Display.html?id=9521> - released by David Bussenschutt 9th Aug 2007 1.02 - released by Mark Bush 29th Oct 2001