Authen-Simple-HTTP-0.2/0040755000076500007650000000000010361526166014447 5ustar chansenchansenAuthen-Simple-HTTP-0.2/Build.PL0100644000076500007650000000053310361526166015741 0ustar chansenchansenuse strict; use Module::Build; my $build = Module::Build->new( license => 'perl', module_name => 'Authen::Simple::HTTP', requires => { 'Authen::Simple' => 0, 'LWP::UserAgent' => 0, }, create_makefile_pl => 'traditional', create_readme => 1 ); $build->create_build_script; Authen-Simple-HTTP-0.2/Changes0100644000076500007650000000023710361526166015741 0ustar chansenchansenRevision history for Perl extension Authen::Simple::HTTP 0.2 2006-01-12 00:00 - use HEAD method instead of GET. 0.1 2006-01-03 00:00 - first release Authen-Simple-HTTP-0.2/lib/0040755000076500007650000000000010361526166015215 5ustar chansenchansenAuthen-Simple-HTTP-0.2/lib/Authen/0040755000076500007650000000000010361526166016441 5ustar chansenchansenAuthen-Simple-HTTP-0.2/lib/Authen/Simple/0040755000076500007650000000000010361526166017672 5ustar chansenchansenAuthen-Simple-HTTP-0.2/lib/Authen/Simple/HTTP.pm0100644000076500007650000000777110361526166021020 0ustar chansenchansenpackage Authen::Simple::HTTP; use strict; use warnings; use base 'Authen::Simple::Adapter'; use LWP::UserAgent; use Params::Validate qw[]; our $VERSION = 0.2; __PACKAGE__->options({ url => { type => Params::Validate::SCALAR, optional => 0 }, agent => { type => Params::Validate::OBJECT, isa => 'LWP::UserAgent', default => LWP::UserAgent->new( cookie_jar => {}, keep_alive => 1, timeout => 30 ), optional => 1 } }); sub check { my ( $self, $username, $password ) = @_; # This implementation is very hackish, however I could not find a cleaner # way to implement this without forking a lot of code from LWP::UserAgent. # Please let me know if you have any ideas of improvements. my $override = sprintf '%s::get_basic_credentials', ref $self->agent; my $response = undef; my $url = $self->url; # First make sure we receive a challenge { no strict 'refs'; no warnings 'redefine'; local *$override = sub { return ( undef, undef ); }; $response = $self->agent->head($url); } if ( my $warning = $response->header('Client-Warning') ) { $self->log->error( qq/Received a client warning: '$warning'./ ) if $self->log; return 0; } if ( $response->code != 401 ) { $self->log->error( qq/Server did not return a authentication challenge for '$url'./ ) if $self->log; return 0; } # We have a challenge, issue a new request with credentials. { no strict 'refs'; no warnings 'redefine'; local *$override = sub { return ( $username, $password ); }; $response = $self->agent->head($url); } if ( $response->code == 401 ) { $self->log->debug( qq/Failed to authenticate user '$username' using url '$url'. Reason: 'Invalid credentials'/ ) if $self->log; return 0; } if ( $response->is_error ) { my $code = $response->code; my $message = $response->message; $self->log->error( qq/Failed to authenticate user '$username' using url '$url'. Reason: '$code $message'/ ) if $self->log; return 0; } $self->log->debug( qq/Successfully authenticated user '$username' using url '$url'./ ) if $self->log; return 1; } 1; __END__ =head1 NAME Authen::Simple::HTTP - Simple HTTP authentication =head1 SYNOPSIS use Authen::Simple::HTTP; my $http = Authen::Simple::HTTP->new( url => 'http://www.host.com/protected' ); if ( $http->authenticate( $username, $password ) ) { # successfull authentication } # or as a mod_perl Authen handler PerlModule Authen::Simple::Apache PerlModule Authen::Simple::HTTP PerlSetVar AuthenSimpleHTTP_url "http://www.host.com/protected" PerlAuthenHandler Authen::Simple::HTTP AuthType Basic AuthName "Protected Area" Require valid-user =head1 DESCRIPTION Authenticate against an HTTP server. =head1 METHODS =over 4 =item * new This method takes a hash of parameters. The following options are valid: =over 8 =item * url Url to authenticate against. Required. url => 'http://www.host.com/protected' =item * agent Any object that is a subclass of L. agent => LWP::UserAgent->new; =item * log Any object that supports C, C, C and C. log => Log::Log4perl->get_logger('Authen::Simple::HTTP') =back =item * authenticate( $username, $password ) Returns true on success and false on failure. =back =head1 SEE ALSO L. L. L. =head1 AUTHOR Christian Hansen C =head1 COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut Authen-Simple-HTTP-0.2/Makefile.PL0100644000076500007650000000070110361526166016414 0ustar chansenchansen# Note: this file was auto-generated by Module::Build::Compat version 0.03 use ExtUtils::MakeMaker; WriteMakefile ( 'NAME' => 'Authen::Simple::HTTP', 'VERSION_FROM' => 'lib/Authen/Simple/HTTP.pm', 'PREREQ_PM' => { 'Authen::Simple' => '0', 'LWP::UserAgent' => '0' }, 'INSTALLDIRS' => 'site', 'PL_FILES' => {} ) ; Authen-Simple-HTTP-0.2/MANIFEST0100644000076500007650000000021310361526166015571 0ustar chansenchansenBuild.PL Changes lib/Authen/Simple/HTTP.pm Makefile.PL MANIFEST This list of files README t/01use.t t/02pod.t t/03podcoverage.t META.yml Authen-Simple-HTTP-0.2/META.yml0100644000076500007650000000050210361526166015712 0ustar chansenchansen--- name: Authen-Simple-HTTP version: 0.2 author: - 'Christian Hansen C' abstract: Simple HTTP authentication license: perl requires: Authen::Simple: 0 LWP::UserAgent: 0 provides: Authen::Simple::HTTP: file: lib/Authen/Simple/HTTP.pm version: 0.2 generated_by: Module::Build version 0.2611 Authen-Simple-HTTP-0.2/README0100644000076500007650000000322110361526166015322 0ustar chansenchansenNAME Authen::Simple::HTTP - Simple HTTP authentication SYNOPSIS use Authen::Simple::HTTP; my $http = Authen::Simple::HTTP->new( url => 'http://www.host.com/protected' ); if ( $http->authenticate( $username, $password ) ) { # successfull authentication } # or as a mod_perl Authen handler PerlModule Authen::Simple::Apache PerlModule Authen::Simple::HTTP PerlSetVar AuthenSimpleHTTP_url "http://www.host.com/protected" PerlAuthenHandler Authen::Simple::HTTP AuthType Basic AuthName "Protected Area" Require valid-user DESCRIPTION Authenticate against an HTTP server. METHODS * new This method takes a hash of parameters. The following options are valid: * url Url to authenticate against. Required. url => 'http://www.host.com/protected' * agent Any object that is a subclass of LWP::UserAgent. agent => LWP::UserAgent->new; * log Any object that supports "debug", "info", "error" and "warn". log => Log::Log4perl->get_logger('Authen::Simple::HTTP') * authenticate( $username, $password ) Returns true on success and false on failure. SEE ALSO Authen::Simple. LWP::UserAgent. LWPx::ParanoidAgent. AUTHOR Christian Hansen "ch@ngmedia.com" COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. Authen-Simple-HTTP-0.2/t/0040755000076500007650000000000010361526166014712 5ustar chansenchansenAuthen-Simple-HTTP-0.2/t/01use.t0100644000076500007650000000007410361526166016032 0ustar chansenchansenuse Test::More tests => 1; use_ok('Authen::Simple::HTTP'); Authen-Simple-HTTP-0.2/t/02pod.t0100644000076500007650000000027610361526166016025 0ustar chansenchansenuse Test::More; eval "use Test::Pod 1.14"; plan skip_all => 'Test::Pod 1.14 required' if $@; plan skip_all => 'set TEST_POD to enable this test' unless $ENV{TEST_POD}; all_pod_files_ok(); Authen-Simple-HTTP-0.2/t/03podcoverage.t0100644000076500007650000000036510361526166017541 0ustar chansenchansenuse Test::More; eval "use Test::Pod::Coverage 1.04"; plan skip_all => 'Test::Pod::Coverage 1.04 required' if $@; plan skip_all => 'set TEST_POD to enable this test' unless $ENV{TEST_POD}; all_pod_coverage_ok( { trustme => [ qr/^check$/ ] } );