482 lines
17 KiB
Perl
482 lines
17 KiB
Perl
package Lemonldap::NG::Manager::Help;
|
||
|
||
use AutoLoader qw(AUTOLOAD);
|
||
use UNIVERSAL qw(can);
|
||
our $VERSION = '0.33';
|
||
|
||
sub import {
|
||
my ($caller_package) = caller;
|
||
my $lang = shift;
|
||
$lang = lc($lang);
|
||
foreach ( split( /[,;]/, $lang ) ) {
|
||
next if /=/;
|
||
s/fr-fr/fr/;
|
||
s/en-us/en/;
|
||
if ( __PACKAGE__->can("help_groups_$_") ) {
|
||
$l = $_;
|
||
last;
|
||
}
|
||
}
|
||
$l ||= "en";
|
||
foreach $h (qw(authParams cookieName domain groups ldap macros storage vars
|
||
whatToTrace virtualHosts)) {
|
||
*{"${caller_package}::help_$h"} = \&{"help_${h}_$l"};
|
||
}
|
||
}
|
||
|
||
1;
|
||
__END__
|
||
|
||
=pod
|
||
=cut
|
||
sub help_authParams_en {
|
||
print <<EOT;
|
||
<h3>Authentication Parameters</h3>
|
||
<dl>
|
||
<dt> Authentication type </dt>
|
||
<dd> By default,Lemonldap::NG uses ldap authentication scheme. You can change
|
||
this by 'SSL' for example.</dd>
|
||
|
||
<dt> Portal </dt>
|
||
<dd> Set here the URL used to authenticate users (portal). The portal has to
|
||
inherits from Lemonldap::NG::Portal::SharedConf.</dd>
|
||
|
||
<dt> Secured cookie (SSL) </dt>
|
||
<dd> An authenticated user is known by his cookie. If all (virtual) hosts use
|
||
HTTPS, set this value to 1 so the cookie will be protected and will not be
|
||
transmitted unless https is used.</dd>
|
||
</dl>
|
||
EOT
|
||
}
|
||
|
||
sub help_authParams_fr {
|
||
print <<EOT;
|
||
<h3>Paramètres d'authentification</h3>
|
||
<dl>
|
||
<dt> Type d'authentification </dt>
|
||
<dd> Le schéma classique d'authentification Lemonldap;;NG consiste à utiliser une
|
||
authentification par LDAP. Vous pouvez changer ceci en "SSL" par exemple.</dd>
|
||
|
||
<dt> Portail </dt>
|
||
<dd> Indiquez ici l'URL ou seront renvoyés les utilisateurs non authentifiés.
|
||
Cette URL doit bien sur correspondre à un portail utilisant
|
||
Lemonldap::NG::Portal::SharedConf.</dd>
|
||
|
||
<dt> Cookie sécurisé (SSL) </dt>
|
||
<dd> Une fois authentifié, l'utilisateur est reconnu par son cookie. Si tous
|
||
les hôtes virtuels de votre domaine son protégés par SSL, mettez cette option
|
||
à 1, ainsi le cookie ne sera présenté par le navigateur qu'aux sites protégés,
|
||
ce qui évite un vol de session.</dd>
|
||
</dl>
|
||
EOT
|
||
}
|
||
|
||
sub help_cookieName_en {
|
||
print <<EOT;
|
||
<h3>Cookie Name</h3>
|
||
<p> Set here the name of the cookie ('lemonldap' by default).<br>
|
||
|
||
WARNING, any change here needs to restart all the Apache servers that use
|
||
a Lemonldap::NG::Handler.</p>
|
||
EOT
|
||
}
|
||
|
||
sub help_cookieName_fr {
|
||
print <<EOT;
|
||
<h3>Nom de cookie</h3>
|
||
<p> Indiquez ici le nom du cookie ('lemonldap' par défaut).<br>
|
||
|
||
ATTENTION, tout changement nécessite le redémarrage de tous les serveurs Apache
|
||
hébergeant des agents de protection Lemonldap::NG::Handler.</p>
|
||
EOT
|
||
}
|
||
|
||
sub help_domain_en {
|
||
print <<EOT;
|
||
<h3>Protected domain</h3>
|
||
<p> Set here the main domain (or sub-domain) protected by Lemonldap::NG. If you
|
||
use "Cross domain authentication", set here the domain of the portal.<br>
|
||
WARNING : all the virtual hosts that are not under the same domain than the
|
||
portal must be protected by handlers that inherits from
|
||
Lemonldap::NG::Handler::CDA and if such handlers exist, you have to use
|
||
Lemonldap::NG::Portal::CDA.
|
||
EOT
|
||
}
|
||
|
||
sub help_domain_fr {
|
||
print <<EOT;
|
||
<h3>Domaine protégé</h3>
|
||
<p> Indiquez ici le nom du domaine (ou du sous-domaine) contenant vos
|
||
applications à protéger. Si vous utilisez le "Cross domain
|
||
authentication", indiquez ici le domaine du portail<br>
|
||
ATTENTION : tous les hôtes virtuels protégés ne se trouvant
|
||
pas dans le même domaine que le portail doivent être protégés par un agent
|
||
héritant de Lemonldap::NG::Handler::CDA et si un seul de ces agents est
|
||
utilisé, le portail doit être de type Lemonldap::NG::Portal::CDA.
|
||
EOT
|
||
}
|
||
|
||
sub help_groups_en {
|
||
print <<EOT;
|
||
<h3>User Groups</h3>
|
||
<p> Groups are not required but accelerate the treatment of the requests. For
|
||
example, if a virtual host is granted only for 3 users, the rule is :</p>
|
||
<pre>
|
||
# test.example.com - Rules
|
||
default => \$uid eq "user1" or \$uid eq "user2" or \$uid eq "user3"
|
||
</pre>
|
||
<p> The problem is that this rule is calculated for each HTTP request. Other
|
||
example, if 2 sites have the same rules, any modification on one has to be
|
||
write in the second. The 'groups' system solve this : groups are
|
||
evaluated one time in the authentication phase, and the result is stored in the
|
||
\$groups variable. The rule abode becomes :</p>
|
||
<pre>
|
||
# Group declaration
|
||
group1 => \$uid eq "user1" or \$uid eq "user2" or \$uid eq "user3"
|
||
|
||
# Use of the group :
|
||
# test.example.com - Rules
|
||
default => \$groups =~ /\\bgroup1\\b/
|
||
</pre>
|
||
<p> The last rule is a Perl regular expression (PCRE) that means 'search the
|
||
word "group1" in the string "groups"'.</p>
|
||
<p> The \$groups string joins all the groups where the user matchs the
|
||
expression. The groups are separated by a space in the \$groups string.</p>
|
||
EOT
|
||
}
|
||
|
||
sub help_groups_fr {
|
||
print <<EOT;
|
||
<h3>Groupes d'utilisateurs</h3>
|
||
<p>Les groupes ne sont pas indispensables mais accélèrent le traitement des
|
||
requêtes. Par exemple, si un hôte virtuel est autorisé nominativement à
|
||
user, user2 et user3, la règle d'accès s'écrira :</p>
|
||
<pre>
|
||
# test.example.com - Règles
|
||
default => \$uid eq "user1" or \$uid eq "user2" or \$uid eq "user3"
|
||
</pre>
|
||
<p> Le problème est que cette expression sera calculée à chaque requête HTTP.
|
||
D'autre part, si 2 hôtes virtuels ont la même règle d'accès, toute modification
|
||
doit être répercutée sur les deux hôtes virtuels. Le système des groupes permet
|
||
de résoudre ces deux problèmes : lors de la connexion au portail, les
|
||
expressions complexes sont calculées une fois pour toute la session et le
|
||
résultat est stocké dans la chaîne \$groups. L'exemple précédent devient
|
||
alors :</p>
|
||
<pre>
|
||
# Déclaration d'un groupe
|
||
group1 => \$uid eq "user1" or \$uid eq "user2" or \$uid eq "user3"
|
||
|
||
# Utilisation :
|
||
# test.example.com - Règles
|
||
default => \$groups =~ /\\bgroup1\\b/
|
||
</pre>
|
||
<p> Cette dernière expression est une expression régulière Perl (PCRE) qui
|
||
correspond à la recherche du mot group1 dans la chaîne \$groups (\\b signifie
|
||
début ou fin de mot).</p>
|
||
|
||
<p>La variable exportée \$groups est une chaîne de caractères composés de tous les
|
||
noms de groupes auquel l'utilisateur connecté appartient (c'est à dire les
|
||
noms de groupe pour lesquels l'expression est vraie).</p>
|
||
EOT
|
||
}
|
||
|
||
sub help_ldap_en {
|
||
print <<EOT;
|
||
<h3>LDAP Parameters</h3>
|
||
<p>LDAP parameters are used to identify users. They must be set even if
|
||
authentication is done by another system (SSL for example).</p>
|
||
<ul>
|
||
<li>LDAP base : required (except if your server accepts the requests without
|
||
base). Example :
|
||
<pre> dc=example, dc=com </pre></li>
|
||
<li>LDAP server port : 389 by default ;</li>
|
||
<li>LDAP server : Name (or IP address) of the LDAP server. To use LDAPS, set
|
||
here :
|
||
<pre> ldaps://server/</pre>
|
||
and don't forget to change port (636 for example)</li>
|
||
<li>LDAP account : optional, must be set if anonymous connection cannot
|
||
access to the wanted LDAP attributes. This account is used before LDAP
|
||
authentication to find user's dn ;
|
||
</li>
|
||
<li>LDAP password : password corresponding to the account above.
|
||
</ul>
|
||
EOT
|
||
}
|
||
|
||
sub help_ldap_fr {
|
||
print <<EOT;
|
||
<h3>Paramètres LDAP</h3>
|
||
<p> Les paramètres LDAP servent à identifier les utilisateurs.
|
||
Ils doivent être renseignés même si l'authentification est
|
||
réalisée par un autre moyen (SSL par exemple).</p>
|
||
<ul>
|
||
<li>Base de recherche LDAP : obligatoire (à moins que votre serveur LDAP
|
||
accepte les requêtes sans base). Exemple :
|
||
<pre> dc=example, dc=com </pre></li>
|
||
<li>Port du serveur LDAP : 389 par défaut ;</li>
|
||
<li>Serveur LDAP : Nom (ou adresse IP) du serveur LDAP. Pour une connexion
|
||
LDAPS, indiquez ici :
|
||
<pre> ldaps://server/</pre>
|
||
et n'oubliez pas de changer le port (636 en général)</li>
|
||
<li>Compte de connexion LDAP : optionnel, à renseigner si les attributs LDAP
|
||
utilisés ne sont pas accessibles par une session anonyme. Ce compte est
|
||
utilisé avant l'authentification pour trouver le dn de l'utilisateur ;
|
||
</li>
|
||
<li>Mot de passe LDAP : mot de passe correspondant au compte ci-dessus.
|
||
</ul>
|
||
EOT
|
||
}
|
||
|
||
sub help_macros_en {
|
||
print <<EOT;
|
||
<h3>Macros</h3>
|
||
<p> Macros are used to add new variables to user variables attributes). Those
|
||
new variables are calculated from other variables issued from LDAP attributes.
|
||
This mechanism avoid to do more than one time the same operation in the
|
||
authentication phase. Example :</p>
|
||
<pre>
|
||
# macros
|
||
long_name => \$givenname . " " . \$surname
|
||
admin => \$uid eq "foo" or \$uid eq "bar"
|
||
|
||
# test.example.com - Headers
|
||
Name => \$long_name
|
||
|
||
# test.example.com - Rules
|
||
^/admin/ => \$admin
|
||
EOT
|
||
}
|
||
|
||
sub help_macros_fr {
|
||
print <<EOT;
|
||
<h3>Macros</h3>
|
||
<p> Les macros permettent d'ajouter des variables calculées à
|
||
partir des attributs LDAP (variables exportées). Elles évitent
|
||
de répéter le même calcul plusieurs fois dans la phase
|
||
d'authentification. Exemple :</p>
|
||
<pre>
|
||
# macros
|
||
nom_complet => \$givenname . " " . \$surname
|
||
admin => \$uid eq "foo" or \$uid eq "bar"
|
||
|
||
# test.example.com - En-têtes
|
||
Nom => \$nom_complet
|
||
|
||
# test.example.com - Règles
|
||
^/admin/ => \$admin
|
||
EOT
|
||
}
|
||
|
||
sub help_storage_en {
|
||
print <<EOT;
|
||
<h3>Sessions Storage</h3>
|
||
<p> Lemonldap::NG sessions storage works with modules that inherits from
|
||
Apache::Session. You have to set here the choosen module and add the
|
||
corresponding parameters :</p>
|
||
<p>Examples :</p>
|
||
<ul>
|
||
<li>Module => Apache::Session::File, <br>options :
|
||
<ul>
|
||
<li> Directory => /var/cache/lemonldap</li>
|
||
</ul>
|
||
</li>
|
||
<li>Module => Apache::Session::MySQL, <br>options :
|
||
<ul>
|
||
<li> DataSource => DBI:mysql:database=lemon;host=1.2.3.4</li>
|
||
<li> UserName => Lemonldap
|
||
<li> Password => mypass
|
||
<li> timeout => 7200
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<p>
|
||
<b>Note</b> : if you use <tt><b>purgeCentralCache</b></tt> script provided
|
||
in the portal sources (to use in crontab), you can set the <b>timeout</b>
|
||
parameter to manage sessions end (7200 secondes by default).
|
||
</p>
|
||
EOT
|
||
}
|
||
|
||
sub help_storage_fr {
|
||
print <<EOT;
|
||
<h3>Stockage des sessions</h3>
|
||
<p> Le stockage des sessions Lemonldap::NG est réalisé au travers des modules
|
||
hérités de Apache::Session. Vous devez indiquer ici le module choisi et
|
||
indiquer les paramètres correspondants à ce module :</p>
|
||
<p>Exemples :</p>
|
||
<ul>
|
||
<li>Module => Apache::Session::File, <br>options :
|
||
<ul>
|
||
<li> Directory => /var/cache/lemonldap</li>
|
||
</ul>
|
||
</li>
|
||
<li>Module => Apache::Session::MySQL, <br>options :
|
||
<ul>
|
||
<li> DataSource => DBI:mysql:database=lemon;host=1.2.3.4</li>
|
||
<li> UserName => Lemonldap
|
||
<li> Password => mypass
|
||
<li> timeout => 7200
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<p>
|
||
<b>Note</b> : si vous utilisez le script <tt><b>purgeCentralCache</b></tt>
|
||
fourni dans les sources du portail (à mettre en crontab), vous pouvez ajouter
|
||
le paramètre <b>timeout</b> pour gérer la destruction des sessions (7200
|
||
secondes par défaut).
|
||
</p>
|
||
EOT
|
||
}
|
||
|
||
sub help_vars_en {
|
||
print <<EOT;
|
||
<h3>Variables (LDAP attributes)</h3>
|
||
<p> Set here the LDAP attributes you need in your configuration or in exported
|
||
headers.</p>
|
||
<p> Declare as the following :</p>
|
||
<pre> <MyName> => <real LDAP attribute name></pre>
|
||
<p>Examples :</p>
|
||
<pre>
|
||
uid => uid
|
||
unit => ou
|
||
</pre>
|
||
Declared names can be used in rules, groups, macros and HTTP headers by using
|
||
them with '\$'. Example :
|
||
<pre>
|
||
group1 => \$uid eq 'user1' or \$uid eq 'user2'
|
||
</pre>
|
||
EOT
|
||
}
|
||
|
||
sub help_vars_fr {
|
||
print <<EOT;
|
||
<h3>Variables (attributs LDAP)</h3>
|
||
<p> Indiquez ici tous les attributs LDAP dont vous avez besoin dans votre
|
||
configuration (pour définir les groupes, les macros, les règles
|
||
d'accès aux hôtes virtuels ou encore les en-têtes HTTP).</p>
|
||
<p>La déclaration d'une variable se fait sous la forme :</p>
|
||
<pre> <nom declare> => <nom de l'attribut LDAP></pre>
|
||
<p>Exemples :</p>
|
||
<pre>
|
||
uid => uid
|
||
unite => ou
|
||
</pre>
|
||
Les noms déclarés s'utilisent ensuite dans les règles, les
|
||
groupes, les macros ou les en-têtes HTTP en les faisant
|
||
précéder du signe '\$'. Exemple :
|
||
<pre>
|
||
group1 => \$uid eq 'user1' or \$uid eq 'user2'
|
||
</pre>
|
||
EOT
|
||
}
|
||
|
||
sub help_virtualHosts_en {
|
||
print <<EOT;
|
||
<h3>Virtual Hosts</h3>
|
||
|
||
<p> A virtual host configuration is cutted in 2 pieces : the rules and the HTTP
|
||
headers.</p>
|
||
|
||
<p> <u>Note</u> : If portal and handlers are not in the same domain than declared
|
||
in "General Parameters" menu, <u>you have to use</u> CDA modules. Else, session
|
||
cookie is not seen by handlers.
|
||
|
||
<h4> Rules </h4>
|
||
|
||
<p> A rule associates a regular expression with a perl boolean expression.
|
||
When a user tries to access to an URL that match with the regular expression,
|
||
access is granted or not depending on the boolean expression result :</p>
|
||
|
||
<pre>
|
||
# Virtual host test.example.com - rules
|
||
^/protected => \$groups =~ /\\bgroup1\\b/
|
||
</pre>
|
||
|
||
<p> This rule means that all URL starting with '/protected', are reserved to
|
||
users member of 'group1'. You can also use 'accept' and 'deny' keywords.
|
||
'accept' keyword means that all authenticated users are granted.</p>
|
||
|
||
<p> If URL doesn't match any regular expression, 'default' rule is called to
|
||
grant or not.</p>
|
||
|
||
<h4> Headers </h4>
|
||
|
||
<p> Headers are used to inform the remote application on the connected user.
|
||
They are declared as :
|
||
<tt><Header Name> => <Perl expression>.
|
||
</p>
|
||
|
||
<p> Examples :</p>
|
||
|
||
<pre>
|
||
Auth-User => \$uid
|
||
Unite => \$departmentUID
|
||
</pre>
|
||
EOT
|
||
}
|
||
|
||
sub help_virtualHosts_fr {
|
||
print <<EOT;
|
||
<h3>Hôtes virtuels</h3>
|
||
|
||
<p> La configuration d'un hôte virtuel est divisée en 2 parties : les
|
||
règles et les en-têtes HTTP exportés.</p>
|
||
|
||
<p> <u>Note</u> : pour que le mécanisme d'authentification fonctionne, tous
|
||
les hôtes virtuels et le portail doivent se trouver dans le domaine déclaré
|
||
dans les paramètres généraux ou <u>utiliser les modules CDA</u>
|
||
<i>(Cross-Domain-Authentication)</i> qui gère la transmission de l'identifiant.</p>
|
||
|
||
<h4> Règles</h4>
|
||
|
||
<p>Une règle associe une expression régulière perl à une expression booléenne.
|
||
Lors de l'accès d'un utilisateur, si l'URL demandée correspond à la règle, le
|
||
droit d'accès est calculé par l'expression booléenne. Exemple :</p>
|
||
|
||
<pre>
|
||
# Hôte virtuel test.example.com - règles
|
||
^/protected => \$groups =~ /\\bgroup1\\b/
|
||
</pre>
|
||
|
||
<p> La règle ci-dessus signifie que pour les URL commençant par '/protected',
|
||
les utilisateurs doivent appartenir au groupe 'group1'. Vous pouvez également
|
||
utiliser les mots-clefs 'accept' et 'deny'. Attention, 'accept' signifie que
|
||
tous les utilisateurs authentifiés peuvent accéder.</p>
|
||
|
||
<p>Si l'URL demandée ne correspond à aucune des expressions régulières, le
|
||
droit d'accès est calculé à partir de l'expression booléenne définie dans
|
||
la règle par défaut (default).</p>
|
||
|
||
<h4> En-têtes</h4>
|
||
|
||
<p> Les en-têtes servant à l'application à savoir qui est connecté se déclarent
|
||
comme suit : <tt><nom de l'en-tête> => <expression Perl>.
|
||
</p>
|
||
|
||
<p> Exemples :</p>
|
||
|
||
<pre>
|
||
Auth-User => \$uid
|
||
Unite => \$departmentUID
|
||
</pre>
|
||
EOT
|
||
}
|
||
|
||
sub help_whatToTrace_en {
|
||
print <<EOT;
|
||
<h3>What to log in Apache</h3>
|
||
<p> Set here le name of the variable (attribute) or macro that has to be used
|
||
in proected application Apache logs (don't forget "\$"). By default :
|
||
\$uid</p>
|
||
EOT
|
||
}
|
||
|
||
sub help_whatToTrace_fr {
|
||
print <<EOT;
|
||
<h3>Donn<6E>e <20> journaliser dans Apache</h3>
|
||
<p> Indiquez ici le nom de la variable (attribut) ou de la macro qui doit <20>tre
|
||
utilis<EFBFBD>e pour alimenter les journaux Apache des applications prot<6F>g<EFBFBD>es
|
||
(n'oubliez pas le "\$"). Par d<>faut : \$uid</p>
|
||
EOT
|
||
}
|