Apache2-AuthZSympa
view release on metacpan or search on metacpan
lib/Apache2/AuthNSympa.pm view on Meta::CPAN
$r->log_error("Apache2::AuthNSympa configuration ($location) : memcached server ($cacheserver) naming format is incorrect, a port number is required");
return Apache2::Const::HTTP_INTERNAL_SERVER_ERROR;
}
my $cache = new Cache::Memcached {
'servers' => [ $cacheserver ],
'namespace' => 'AuthNSympa',
};
##collect informations from connection
my ($status, $password) = $r->get_basic_auth_pw;
$mail_user = $r->user;
unless ($status == Apache2::Const::OK){
$r->note_basic_auth_failure;
return $status
}
unless ($mail_user && $password){
$r->note_basic_auth_failure;
return Apache2::Const::AUTH_REQUIRED;
}
## key generation for cache : md5($mail_user + server name) -> prevents from errors when updating
my $user_key = md5_hex($mail_user.$SympaSoapServer);
my $hash_pass = md5_hex($password);
if (defined $cache){
my $cache_pass = $cache->get($user_key);
$cache_pass |= "";
if ($cache_pass eq $hash_pass){
return Apache2::Const::OK;
}
}
## authentify using SympaSoapServer
unless($soap->login($mail_user,$password)){
$r->note_basic_auth_failure;
return Apache2::Const::DECLINED;
}else{
$response=$soap->login($mail_user,$password);
}
## verify if error during soap service request
if ($soap_error==1){
my ($type_error,$detail) = &traite_soap_error($soap, $soap_res);
if ($type_error eq 'ERROR'){
$r->log_error("Apache2::AuthNSympa : SOAP error $detail while accessing $location");
}else{
$r->log->notice("Apache2::AuthNSympa : $detail ","while accessing $location");
};
lib/Apache2/AuthZSympa.pm view on Meta::CPAN
For example, in a location section of your Apache configuration file, you have to put the following rules :
PerlSetVar SympaSoapServer http://mysympa.server/soap # URL of the sympa SOAP server
PerlAuthzHandler Apache2::AuthZSympa
require SympaLists sympa-users@demo.sympa.org,sympa-test@demo.sympa.org # lists for which the member has to be a member (he needs to be at least a member for one of them)
PerlSetVar MemcachedServer 10.219.213.24:11211 # URL for cache server (option)
PerlSetVar CacheExptime 3600 # Cache expiration time in seconds for the cache server (default 1800)
We provide a working example of a web page that has a restricted access for members of test@cru.fr mailing list only. You should subscribe to the test mailing list if you wish to try it : http://listes.cru.fr/sympa/info/test
The following page will request your email address and Sympa password : http://www.cru.fr/demo_authsympa/
=head1 SYMPA AUTHENTICATION MODULE
It is based on a basic HTTP authentication authentication (popup on client side). Once the user has authenticated, the REMOTE_USER environnement var contains the user email address. The authentication module implements a SOAP client that validates ...
Example:
<Directory "/var/www/somewhere">
AuthName SympaAuth
( run in 0.914 second using v1.01-cache-2.11-cpan-49f99fa48dc )