NAME
Authen::Pluggable - A Perl module to authenticate users via pluggable modules
VERSION
version 0.03
SYNOPSIS
use Authen::Pluggable;
my $auth = Authen::Pluggable->new();
$auth->provider('plugin1','plugin2');
$auth->plugin1->cfg({...});
$auth->plugin2->cfg({...});
my $user_info = $auth->authen($username, $password) || die "Login failed";
DESCRIPTION
Authen::Pluggable is a Perl module to authenticate users via pluggable modules
Every plugin class is in namespace Authen::Pluggable::*
so you must omit it
METHODS
new
This method takes a hash of parameters. The following options are valid:
- log
-
Any object that supports debug, info, error and warn.
log => Log::Log4perl->get_logger('Authen::Simple::LDAP')
provider($provider, $plugin [opt])
If $plugin
is omitted Authen::Pluggable::$provider
is loaded. If $plugin
is set Authen::Pluggable::$plugin
is loaded with $provider
as alias.
It return the plugin object.
providers(@providers)
If @providers
items are scalar, they are considered as plugin name and they are loaded. Else they can be hashref items. The hash key is considered as plugin name if there isn't a provider key inside else it's considered as alias name while provider key are considered as plugin name.
$auth->providers('plugin1', 'plugin2')
loads Authen::Pluggable::plugin1
and Authen::Pluggable::plugin2
$auth->providers(
{ alias1 => {
provider => 'plugin1',
... other configurations ...
},
alias2 => {
provider => 'plugin1',
... other configurations ...
}
}
),
loads Authen::Pluggable::plugin1
two times, one with provider name alias1
and one with alias2
. See "50-alias.t" in t in test folder for an example with two different password files
It always return the object itself.
authen($username, $password, [opt] $providers)
Call all configured providers, or only $providers if configured, and return the first with a valid authentication.
The structure returned is usually something like this
{ provider => $provider, user => $user, cn => $cn, gid => $gid };
where $provider
is the alias of the provider which return the valid authentication and $cn
is the common name of the user.
If no plugins return a valid authentication, this method returns undef.
EXAMPLE FOR CONFIGURING PROVIDERS
There are various methods to select the providers where autenticate and to configure it. Here some example using chaining.
This load and configure Passwd plugin
$auth->provider('Passwd')->cfg(
'file' => ...
);
This load and confgure AD plugin
$auth->provider('AD')->cfg(%opt)
Multiple configuration at one time via autoloaded methods
$auth->providers( 'Passwd', 'AD' )
->Passwd->cfg('file' => ...)
->AD->cfg(%opt);
Same but via providers hashref configuration
$auth->providers({
'Passwd' => { 'file' => ... },
'AD' => \%opt,
});
BUGS/CONTRIBUTING
Please report any bugs through the web interface at https://github.com/EmilianoBruni/authen-pluggable/issues
If you want to contribute changes or otherwise involve yourself in development, feel free to fork the Git repository from https://github.com/EmilianoBruni/authen-pluggable/.
SUPPORT
You can find this documentation with the perldoc command too.
perldoc Authen::Pluggable
AUTHOR
Emiliano Bruni <info@ebruni.it>
COPYRIGHT AND LICENSE
This software is copyright (c) 2022 by Emiliano Bruni.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.