NAME
Authen::NTLM - An NTLM authentication module
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
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.
FUNCTIONS
- ntlm_domain()
-
Returns the new domain. Without an argument, this function
returns the current domain entry.
- ntlm_user()
-
Returns the new username. Without an argument, this function
returns the current username entry.
- ntlm_password()
-
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.
OBJECT API
- new %options
-
Creates an object that accepts the following options:
user
,host
,domain
,password
,version
. - 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 NTLM exchange. The result of the call is the final authentication string.
AUTHOR
David (Buzz) Bussenschutt <davidbuzz
@gmail
.com> - current maintainer
Dmitry Karasik <dmitry
@karasik
.eu.org> - nice ntlmv2 patch, OO extensions.
Andrew Hobson <ahobson
@infloop
.com> - initial ntlmv2 code
Mark Bush <Mark.Bush
@bushnet
.demon.co.uk> - perl port
Eric S. Raymond - author of fetchmail
Andrew Tridgell and Jeremy Allison
for
SMB/Netbios code
SEE ALSO
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