SYNOPSIS

  package MyServer;
  use base qw( HTTP::Server::Simple::Authen HTTP::Server::Simple::CGI);

  use Authen::Simple::Passwd;
  sub authen_handler {
      Authen::Simple::Passwd->new(passwd => '/etc/passwd');
  }

  sub handle_request {
      my($self, $cgi) = @_;
      my $user = $self->authenticate or return;
      ...
  }

  MyServer->new->run();

DESCRIPTION

HTTP::Server::Simple::Authen is an HTTP::Server::Simple plugin to allow \s-1HTTP\s0 authentication. Authentication scheme is pluggable and you can use whatever Authentication protocol that Authen::Simple supports.

You can use \*(C`authenticate\*(C' method whatever you want to authenticate the request. The method returns $username taken from the request if the authentication is successful, and \*(C`undef\*(C' otherwise. The code in \*(L"\s-1SYNOPSIS\s0\*(R" requires authentication for all the requests and behaves just the same as Apache's \*(C`Require valid-user\*(C'.

The following code will explain more about conditioning.

sub handle_request { my($self, $cgi) = @_; if ($cgi->path_info =~ m!/foo/!) { my $user = $self->authenticate; return unless defined($user) && length($user) == 8; } ... }

This means all the requests to \s-1URL\s0 \*(C`/foo/\*(C' require to be authenticated, and usernames with 8 chars long are authorized.

METHODS

Your subclass has to override following methods to implement \s-1HTTP\s0 authentication.

authen_handler

Should return a valid Authen::Simple instance to authenticate \s-1HTTP\s0 request (Required).

authen_realm

Returns a string for Authentication realm to be shown in the browser's dialog box. Defaults to 'Authorized area'.

AUTHOR

Tatsuhiko Miyagawa <[email protected]>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

RELATED TO HTTP::Server::Simple::Authen…

HTTP::Server::Simple, Authen::Simple