---
name: "HTTP::Server::Simple::Authen"
section: "3pm"
platform: "linux"
package: "libhttp-server-simple-authen-perl"
version: "0.04-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/HTTP::Server::Simple::Authen"
---

# HTTP::Server::Simple::Authen(3pm)

Authentication plugin for HTTP::Server::Simple

## NAME

HTTP::Server::Simple::Authen - Authentication plugin for HTTP::Server::Simple

## 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 HTTP authentication. Authentication scheme is pluggable and you can use whatever Authentication protocol that Authen::Simple supports.

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

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 URL `"/foo/"` require to be authenticated, and usernames with 8 chars long are authorized.

## METHODS

Your subclass has to override following methods to implement HTTP authentication.

- authen\_handler

  Should return a valid Authen::Simple instance to authenticate HTTP 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 \<miyagawa@bulknews.net\>

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

## SEE ALSO

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