La configuration de LemonLDAP::NG est stockée dans un backend permettant à tous les modules d'y accéder.
La configuration détaillée des backends de stockage est disponible ici.
Par défaut, la configuration est stockée dans des fichiers, donc l'accès par le réseau n'est en général pas possible. Pour contourner ce problème, utiliser SOAP pour l'accès à la configuration ou un service réseau tel une base de donnée SQL ou un annuaire LDAP.
Le backend de configuration peut être indiqué dans le fichier local de configuration, dans la section configuration
.
Par exemple, pour configurer le backend de configuration File
:
[configuration] type=File dirName = /usr/local/lemonldap-ng/data/conf
La majeure partie de la configuration peut être réalisée via le manager LemonLDAP::NG (par défaut http://manager.example.com).
Par défaut, le manager est protégé et n'autorise que l'utilisateur de démonstration “dwho”.
SI l'accès au manager est perdu, on peut le déprotéger en éditant lemonldap-ng.in
et en changeant le paramètre protection
:
[manager]
# Manager protection: by default, the manager is protected by a demo account.
# You can protect it :
# * by Apache itself,
# * by the parameter 'protection' which can take one of the following
# values :
# * authenticate : all authenticated users can access
# * manager : manager is protected like other virtual hosts: you
# have to set rules in the corresponding virtual host
# * rule: <rule> : you can set here directly the rule to apply
# * none : no protection
Le manager affiche des branches principales :
La configuration de LemonLDAP::NG est essentiellement une structure clef/valeur, ainsi le manager présente toutes les clefs en un arbre structuré. Un click sur la clef affiche la valeur associée.
Lorsque toutes les modifications sont effectuées, cliquer sur Sauver
pour enregistrer la configuration.
LemonLDAP::NG fournit un script qui permet d'éditer la configuration sans interface graphique, ce script se nomme lmConfigEditor
et se trouvedans le répertoire bin/ de LemonLDAP::NG, par exemple /usr/share/lemonldap-ng/bin :
/usr/share/lemonldap-ng/bin/lmConfigEditor
Ce script utilise la commande système editor
, qui est liée à l'éditeur favori. Pour le changer :
update-alternatives --config editor
The configuration is displayed as a big Perl Hash, that you can edit:
$VAR1 = { 'ldapAuthnLevel' => '2', 'notificationWildcard' => 'allusers', 'loginHistoryEnabled' => '1', 'key' => 'q`e)kJE%<&wm>uaA', 'samlIDPSSODescriptorSingleSignOnServiceHTTPPost' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/singleSignOn;', 'portalSkin' => 'pastel', 'failedLoginNumber' => '5', ... };
Si une modification est effectuée, la configuration est sauvée avec un nouveau numéro. Sinon, la configuration courante est gardée.
LemonLDAP::NG fournit un script qui autorise l'édition d'éléments de configuration en mode non-interactif. Ce script se nomme lemonldap-ng-cli
et se trouve dans le répertoire bin/ de LemonLDAP::NG, par exemple /usr/share/lemonldap-ng/bin:
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli
Pour connaître les actions possibles, lancer :
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli help
By default, when you change a value, it will be written to configuration backend but:
This allows to modify configuration without impacting running users.
You can force an update of the cache with:
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli update-cache
And you can save current configuration into a new one:
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli increment
To get information abour current configuration:
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli info
LemonLDAP::NG fournit 3 fichiers de configuration Apache :
Ces fichiers doivent être inclus dans la configuration d'Apache, soit par des directives Include
dans le fichier httpd.conf
(voir démarrage rapide), ou via un lien symbolique dans de répertoire de configuration d'Apache (type /etc/httpd/conf.d
).
LoadModule
directive.
Dans l'hôte virtuel du portail se trouve plusieurs éléments de configuration :
ServerName auth.example.com # DocumentRoot DocumentRoot /usr/local/lemonldap-ng/htdocs/portal/ <Directory /usr/local/lemonldap-ng/htdocs/portal/> Order allow,deny Allow from all Options +ExecCGI </Directory> # Perl script <Files *.pl> SetHandler perl-script PerlResponseHandler ModPerl::Registry </Files> # Directory index <IfModule mod_dir.c> DirectoryIndex index.pl index.html </IfModule>
# Gestion des fonctions SOAP functions pour la gestion des sessions (désactivée par défaut) <Location /index.pl/adminSessions> Order deny,allow Deny from all </Location> # Fonctions SOAP pour l'accès aux sessions (désactivées par défaut) <Location /index.pl/sessions> Order deny,allow Deny from all </Location> # Fonctions SOAP pour accéder à la configuration (désactivées par défaut) <Location /index.pl/config> Order deny,allow Deny from all </Location> # Fonctions SOAP pour insérer des notifications (désactivées par défaut) <Location /index.pl/notification> Order deny,allow Deny from all </Location>
mod_rewrite
):# Fournisseur d'identité SAML2 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/saml/metadata /metadata.pl RewriteRule ^/saml/.* /index.pl </IfModule> # Fournisseur d'identité CAS <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/cas/.* /index.pl </IfModule> # Fournisseur d'identité OpenID <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/openidserver/.* /index.pl </IfModule> # OpenID Connect Issuer <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/oauth2/.* /index.pl RewriteRule ^/.well-known/openid-configuration$ /openid-configuration.pl </IfModule>
# Meilleures performances sous ModPerl::Registry # A décommenter pour augmenter les performances du portail <Perl> require Lemonldap::NG::Portal::SharedConf; Lemonldap::NG::Portal::SharedConf->compile( qw(delete header cache read_from_client cookie redirect unescapeHTML)); # Décommenter cette ligne si le menu Lemonldap::NG est utilisé require Lemonldap::NG::Portal::Menu; # Décommenter cette ligne si les fonctions SOAP du portail sont utilisées require SOAP::Lite; </Perl>
L'hôte virtuel du manager est utilisé pour servir l'interface de configuration et la documentation locale. It is run as a FastCGI application:
# FASTCGI CONFIGURATION # --------------------- # 1) URI management RewriteEngine on RewriteRule "^/$" "/psgi/manager-server.fcgi" [PT] # For performances, you can delete the previous RewriteRule line after # puttings html files: simply put the HTML results of differents modules # (configuration, sessions, notifications) as manager.html, sessions.html, # notifications.html and uncomment the 2 following lines: # DirectoryIndex manager.html # RewriteCond "%{REQUEST_FILENAME}" "!\.html$" # REST URLs RewriteCond "%{REQUEST_FILENAME}" "!^/(?:static|doc|fr-doc|lib).*" RewriteRule "^/(.+)$" "/psgi/manager-server.fcgi/$1" [PT] Alias /psgi/ /var/lib/lemonldap-ng/manager/psgi/ # 2) FastCGI engine # You can choose any FastCGI system. Here is an example using mod_fcgid # mod_fcgid configuration <Directory /var/lib/lemonldap-ng/manager/psgi/> SetHandler fcgid-script Options +ExecCGI </Directory> # If you want to use mod_fastcgi, replace lines below by: #FastCgiServer /var/lib/lemonldap-ng/manager/psgi/manager-server.fcgi # Or if you prefer to use CGI, use /psgi/manager-server.cgi instead of # /psgi/manager-server.fcgi and adapt the rewrite rules.
Configuration interface access is not protected by Apache but by LemonLDAP::NG itself (see lemonldap-ng.ini
).
PerlOptions +GlobalRequest PerlRequire Lemonldap/NG/Handler.pm
ErrorDocument 403 http://auth.example.com/?lmError=403 ErrorDocument 500 http://auth.example.com/?lmError=500 ErrorDocument 503 http://auth.example.com/?lmError=503
<VirtualHost *:80> ServerName reload.example.com # Configuration reload mechanism (only 1 per physical server is # needed): choose your URL to avoid restarting Apache when # configuration change <Location /reload> Order deny,allow Deny from all Allow from 127.0.0.0/8 PerlHeaderParserHandler Lemonldap::NG::Handler->reload </Location> # Uncomment this to activate status module #<Location /status> # Order deny,allow # Deny from all # Allow from 127.0.0.0/8 # PerlHeaderParserHandler Lemonldap::NG::Handler->status #</Location> </VirtualHost>
Then, to protect a standard virtual host, the only configuration line to add is:
PerlHeaderParserHandler Lemonldap::NG::Handler
After configuration is saved by Manager, LemonLDAP::NG will try to reload configuration on distant Handlers by sending an HTTP request to the servers. The servers and URLs can be configured in Manager, General Parameters
> reload configuration URLs
: keys are server names or IP the requests will be sent to, and values are the requested URLs.
Ces paramètres peuvent être surchargés dans le fichier ini de LemonLDAP::NG ini file, à la section apply
.
La cible reload
est gérée dans la configuration d'Apache, dans un hôte virtuel protégé par LemonLDAP::NG Handler, par exemple:
<VirtualHost *:80> ServerName reload.example.com <Location /reload> Order deny,allow Deny from all Allow from 127.0.0.0/8 PerlHeaderParserHandler Lemonldap::NG::Handler->refresh </Location> </VirtualHost>
La configuration LemonLDAP::NG peut être gérée par un fichier local au format INI. Le fichier est nommé lemonldap-ng.ini
et dispose des sections suivantes :
Lorsqu'un paramètre et fixé dans lemonldap-ng.ini
, il surcharge le paramètre issu de la configuration globale.
Par exemple, pour surcharger l'apparence du portail :
[portal] portalSkin = dark