Table of Contents

LimeSurvey

Présentation

LimeSurvey est un logiciel de sondage écrit en PHP. LimeSurvey has a webserver authentication mode that allows one to integrate it directly into 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 :

Configuration

On suppose que LimeSurvey est installé dans /var/www/html/limesurvey

Configuration de LimeSurvey

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']
);
On utilise les en-têtes HTTP pour trouver le profil utilisateur par défaut.

Hôte virtuel LimeSurvey

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>
Il faut renseigner la variable PHP_AUTH_USER pour faire fonctionner le mode d'authentification par serveur web.
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;
  }
}

Hôte virtuel LimeSurvey dans le manager

Aller dans le manager et créer un nouvel hôte virtuel pour LimeSurvey.

En-têtes

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
On peut gérer les rôles avec le modèle RBAC ou en utilisant les groupes.

Règles

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
Il est possible de mettre l'accès par défaut à :
  • accept : tous les utilisateurs authentifiés peuvent accéder aux surveillances
  • unprotect : aucune authentification n'est nécessaire pour accéder aux surveillances