Protéger l'accès au portail de téléphonie Recordings (ARI)

Les utilisateurs n'aiment pas retenir pleins de mots de passe, et encore moins un mot de passe sur un téléphone qui doit être composé uniquement de chiffre, résultat, on se retrouve avec des mots de passe très faibles (genre date d'anniversaire, ou numéro de poste).

Intégrer le portail recordings (ARI) à l'auth LL::NG est donc bon pour l'utilisateur fainéant, mais aussi permet d'augmenter la sécurité de l'ensemble

Pour que ce portail puisse se reposer sur LL::NG pour l'authentification, il faut lui appliquer ce patch:

diff -Nur ../recordings/includes/login.php ../recordingssso/includes/login.php
--- ../recordings/includes/login.php    2011-08-02 15:40:15.000000000 +0200
+++ ../recordingssso/includes/login.php 2011-08-03 15:25:51.000000000 +0200
@@ -67,6 +67,10 @@
       $username = $_POST['username'];
       $password = $_POST['password'];
     }
+    // If HTTP_USER_EXTENSION is set, use the value as username
+    elseif (isset($_SERVER['HTTP_USER_EXTENSION'])){
+      $username = $_SERVER['HTTP_USER_EXTENSION'];
+    }
 
     // init email options array
     $voicemail_email = array();
@@ -145,7 +149,9 @@
             $var = trim($var);
             if ($var==$username && $value) {
               $buf = preg_split('/,/',$value);
-              if ($buf[0]==$password) {  
+              // Don't check password if HTTP_USER_EXTENSION is set
+              // Because it means auth is handled by a SSO system
+              if ($buf[0]==$password or isset($_SERVER['HTTP_USER_EXTENSION'])) {  
 
                 // authenticated
                 $auth = true; 
@@ -395,6 +401,12 @@
       return;
     }
 
+    // If HTTP_USER_EXTENSION is set, don't show the login form
+    if (isset($_SERVER['HTTP_USER_EXTENSION'])){
+      $ret = '';
+      return;
+    }
+
     if (isset($_GET['login'])) {
       $login = $_GET['login'];
     }

Le reste, ça se passe comme n'importe quelle appli (on ajoute le PerlHeaderParserHandler My::Package dans la config apache, on déclare le vhost dans la console LL::NG, et on crée la règle qui nous convient pour l'accès à l'alias de recordings).

Il faut également qu'un des champs LDAP contienne le numéro d'extension des utilisateurs. Ensuite, on exporte cet attribut dans la variable $extension par exemple, puis on déclare une entête HTTP nommé User-Extension → $extension