Autentificación

En verysmall.png Page waiting for translation. To translate, create an account, go back and clic on "Modify".
Fr verysmall.png Page en attente de traduction. Pour traduire, créez un compte, revenez et cliquez sur "Modifier".
Es verysmall.png Página a traducir. Para traducirla, cree una cuenta, vuelva a la página y haga clic en "editar".
It verysmall.png Pagina da tradurre. Per tradurla, crea un utente, torna indietro e clicca su "modifica".
Pt verysmall.png Página a aguardar por tradução. Para traduzir, crie uma conta, volte atrás e clique em "Modificar".
De verysmall.png Seite wartet auf Übersetzung. Um Übersetzung zu erstellen, richte einen Account ein, geh zurück und klicke auf "bearbeiten".
Zh verysmall.png 页面等待翻译。若要翻译本页,先创建一个帐户、登录并返回本页后单击“编辑”。

Introducción

El sistema de autenticación de Dolibarr es relativamente complejo, y un error puede ser especialmente difícil de encontrar a menos conozcamos el proceso de autenticación. Esta página presenta una descripción del proceso, que permite el seguimiento del procedimiento, permitiendo la intervención cuando sea necesario.

Proceso

El proceso se inicia llamando a la página que deseamos ver. Por ejemplo, la página principal htdocs/index.php. Pero este no es el archivo de la solicitud de autenticación asegura. De hecho, cualquier página Dolibarr incluye un fichero pre.inc.php que el mismo incluye el fichero main.php que a su vez incluye master.php. Tenemos pues:

 <index.php>
   <pre.inc.php>
     <main.inc.php>
       <master.inc.php>
         #1#
       </master.inc.php>
       #2#
     </main.inc.php>
   </pre.inc.php>
 </index.php>


El #1# representa la carga de una pila de librerias que vamos a usar, y la inicialización del contexto de la ejecución de código PHP (idioma, configuración, usuario, etc.).

El #2# representa la ejecución del código específico para la autenticación: La verificación de que estamos en una sesión iniciada y de lo contrario mostar la pantalla de login. Aquí es donde se inicializa el bojeto usuario:

La ejecución del login, se presenta como sigue:

$authmode=array('http','dolibarr');
if (isset($dolibarr_auto_user)) $authmode=array('auto');
// Si la demande du login a déjà eu lieu, on le récupère depuis la session
// sinon appel du module qui réalise sa demande.
// A l'issu de cette phase, la variable $login sera définie.
$login=;
if (! session_id() || ! isset($_SESSION["dol_user"]))
{
 # Procédure de login. Affiche page login #
}
else
{
   // On est déjà en session
   $login=$_SESSION["dol_user"];
}
// Charge l'objet user depuis son login
$result=$user->fetch($login);
if ($result <= 0)
{
    dolibarr_print_error($db,$langs->trans("ErrorCantLoadUserFromDolibarrDatabase"));
    exit;
}
// Est-ce une nouvelle session
if (! isset($_SESSION["dol_user"]))
{
   // Nouvelle session pour ce login
   dolibarr_syslog("New session in DOLSESSID_".$dolibarr_main_db_name.": ".session_id());
   $user->update_last_login_date();
   $_SESSION["dol_user"]=$user;
}

Pero analizándolo con más detalle el código de llamada del método de verificación del conjunto usuario/contraseña (hay varios métodos disponibles, por lo que varias llamadas son posibles, debiendo ser mutuamente excluyentes).

   session_name("DOLSESSID_".$dolibarr_main_db_name);
   session_start();
   // Si on rentre ici suite a soumission d'un couple user/password alors
   // Selon la valeur dolibarr_main_authentication, on appelle la fonction
   // dans le bon fichier qui verifie si un couple user/mot de passe est correcte
   // Sinon, on affiche la page de login

Les modules de login

Les modules de login sont les fichiers qui contiennent les fonctions qui controlent la validite d'un couple user/password. Il y a un fichier par module. Chaque fichier assure un type de controle différent.

  • Le fichier htdocs/include/login/functions_http.php controle la validite du couple user/mot de passe par une authentification de type http Basic.
  • Le fichier htdocs/include/login/functions_ldap.php verifie la validite d'un couple user/mot de passe dans un annuaire LDAP.
  • Le fichier htdocs/include/login/functions_dolibarr.php veririe la validite d'un couple user/mot de passe dans la base de donnee Dolibarr.

Chaque fichier contient en fait uniquement une fonction check_user_password_xxx mais Dolibarr ne va en utiliser qu'un. Ce sera celui dont la valeur xxx correspond a la valeur de la variable dolibarr_main_authentication. Dans ce fichier, Dolibarr sollicite la seule fonction qui s'y trouve en envoyant comme parametres le user et mot de passe.La fonction renvoie vrai si le couple est valide.