LimeSurvey est un logiciel de sondage écrit en PHP. LimeSurvey dispose d'un mode d'authentification par serveur web qui permet de l'integrer directement dans LemonLDAP::NG.
Pour une meilleure integration, LimeSurvey doit être configuré pour créer automatiquement les utilisateurs inconnus et utiliser les en-têtes HTTP pour remplir le nom, le mail et les rôles. Par exemple, en utilisant 3 rôles :
La configuration est effectuée via config.php:
vi /var/www/html/limesurvey/config.php
//================================== // WebSSO //================================== $useWebserverAuth = true; $WebserverAuth_autocreateUser = true; $WebserverAuth_autouserprofile = Array( 'full_name' => $_SERVER['HTTP_AUTH_CN'], 'email' => $_SERVER['HTTP_AUTH_MAIL'], 'lang' => 'en', 'htmleditormode' => 'inline', 'templatelist' => 'default,basic,MyOrgTemplate', 'create_survey' => $_SERVER['HTTP_AUTH_ADMIN'] || $_SERVER['HTTP_AUTH_SUPERADMIN'], 'create_user' => $_SERVER['HTTP_AUTH_SUPERADMIN'], 'delete_user' => $_SERVER['HTTP_AUTH_SUPERADMIN'], 'superadmin' => $_SERVER['HTTP_AUTH_SUPERADMIN'], 'configurator' => $_SERVER['HTTP_AUTH_SUPERADMIN'], 'manage_template' => $_SERVER['HTTP_AUTH_SUPERADMIN'], 'manage_label' => $_SERVER['HTTP_AUTH_SUPERADMIN'] );
Configurer l'hôte virtuel LimeSurvey comme n'importe quel autre hôte virtuel protégé.
<VirtualHost *:80> ServerName limesurvey.example.com PerlHeaderParserHandler Lemonldap::NG::Handler SetEnvIfNoCase Auth-User "(.*)" PHP_AUTH_USER=$1 Alias /limesurvey /var/www/html/limesurvey DocumentRoot /var/www/html/limesurvey </VirtualHost>
server {
listen 80;
server_name limesurvey.example.com;
root /path/to/application;
# Requête interne d'authentification
location = /lmauth {
internal;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/llng-fastcgi-server/llng-fastcgi.sock;
# Ignorer les données postées
fastcgi_pass_request_body off;
fastcgi_param CONTENT_LENGTH "";
# Conserver le nom d'hôte original
fastcgi_param HOST $http_host;
# Conserver la requête originale (le serveur LLNG va recevoir /llauth)
fastcgi_param X_ORIGINAL_URI $request_uri;
}
# Requêtes clients
location / {
auth_request /lmauth;
auth_request_set $lmremote_user $upstream_http_lm_remote_user;
auth_request_set $lmlocation $upstream_http_location;
error_page 401 $lmlocation;
try_files $uri $uri/ =404;
...
include /etc/lemonldap-ng/nginx-lua-headers.conf;
}
location / {
try_files $uri $uri/ =404;
}
}
Aller dans le manager et créer un nouvel hôte virtuel pour LimeSurvey.
| Nom d'en-tête | Description |
|---|---|
| Auth-User | nom de connexion |
| Auth-Cn | Nom complet de l'utilisateur |
| Auth-Mail | Email de l'utilisateur |
| Auth-Admin | 1 si l'utilisateur est administrateur |
| Auth-SuperAdmin | 1 si l'utilisateur est super-administrateur |
| Nom de la règle | Expression | Description |
|---|---|---|
| Déconnexion | action=logout$ | Règle de déconnexion (par exemple logout_app_sso) |
| Admin | ^/limesurvey/admin/ | Autorisé seulement pour les rôles admin et superadmin |
| Défaut | default | Autorise seulement les utilisateurs avec un rôle LimeSurvey |