Plack::Middleware::Auth::Basic(3pm) | User Contributed Perl Documentation | Plack::Middleware::Auth::Basic(3pm) |
Plack::Middleware::Auth::Basic - Simple basic authentication middleware
use Plack::Builder; my $app = sub { ... }; builder { enable "Auth::Basic", authenticator => \&authen_cb; $app; }; sub authen_cb { my($username, $password, $env) = @_; return $username eq 'admin' && $password eq 's3cr3t'; }
Plack::Middleware::Auth::Basic is a basic authentication handler for Plack.
Authenticator can also be an object that responds to "authenticate" method that takes username and password and returns boolean, so backends for Authen::Simple is perfect to use:
use Authen::Simple::LDAP; enable "Auth::Basic", authenticator => Authen::Simple::LDAP->new(...);
This middleware expects that the application has a full access to the headers sent by clients in PSGI environment. That is normally the case with standalone Perl PSGI web servers such as Starman or HTTP::Server::Simple::PSGI.
However, in a web server configuration where you can't achieve this (i.e. using your application via Apache's mod_cgi), this middleware does not work since your application can't know the value of "Authorization:" header.
If you use Apache as a web server and CGI to run your PSGI application, you can either a) compile Apache with "-DSECURITY_HOLE_PASS_AUTHORIZATION" option, or b) use mod_rewrite to pass the Authorization header to the application with the rewrite rule like following.
RewriteEngine on RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
Tatsuhiko Miyagawa
Plack
2022-09-06 | perl v5.34.0 |