# documentation:2.0:authdbi
Keywords: documentation,2.0,authdbi

# Bases de données

Authentification | Utilisateurs | Mot-de-passe
--- | --- | ---
✔ | ✔ | ✔

## Présentation

### Drivers

LL::NG peut utiliser de nombreuses bases de données comme backend d'authentification, d'utilisateurs et de mots de passe :

- MySQL
- PostGreSQL
- Oracle
- …

Ainsi, tout driver Perl DBD peut être utilisé.

### Schéma

LL::NG peut utiliser deux tables :

- La table d'authentification : où les logins and et mots-de-passe sont stockés
- La table utilisateurs : où les données utilisateurs sont stockées (mail, nom, etc.)

Les tables d'authentification et utilisateurs peuvent être confondues.

Le mot-de-passe peut être stocké en clair ou encodé avec une méthode SQL standard :

- SHA
- SHA1
- MD5

#### Exemple 1 : deux tables

##### Table d'authentification

id | login | password
--- | --- | ---
0 | coudot | 1f777a6581e478499f4284e54fe2d4a4e513dfff
1 | xguimard | a15a18c8bb17e6f67886a9af1898c018b9f5a072
2 | tchemineau | 1f777a6581e478499f4284e54fe2d4a4e513dfff

##### Table utilisateurs

id | user | nom | mail
--- | --- | --- | ---
0 | coudot | Clément OUDOT | coudot@example.com
1 | tchemineau | Thomas CHEMINEAU | tchemineau@example.com
2 | xguimard | Xavier GUIMARD | xguimard@example.com

#### Example 2: single table

id | user | password | nom | mail
--- | --- | --- | --- | ---
0 | coudot | 1f777a6581e478499f4284e54fe2d4a4e513dfff | Clément OUDOT | coudot@example.com
1 | tchemineau | 1f777a6581e478499f4284e54fe2d4a4e513dfff | Thomas CHEMINEAU | tchemineau@example.com
2 | xguimard | a15a18c8bb17e6f67886a9af1898c018b9f5a072 | Xavier GUIMARD | xguimard@example.com

### SQL

LL::NG exécutera quelques requêtes SQL :

- Authentification : selectionne la ligne de la table d'authentification contenant l'utilisateur et le mot-de-passe
- Recherche de l'utilisateur : selectionne la ligne de la table utilisateurs correspondant à l'utilisateur
- Changement de mot-de-passe : met à jour le champ mot-de-passe de la table d'authentification correspondant à l'utilisateur

## Configuration

Dans le manager, aller dans `Paramètres généraux` > `Modules d'authentification` et choisir "base de données" (DBI) pour les modules authentification, utilisateurs et/ou mots-de-passe.

### Niveau d'authentification

Le niveau d'authentification accordé aux utilisateurs authentifiés par ce module.

Comme DBI est un module de type login/mot-de-passe, le niveau d'authentification peut être :

- augmenté (+1) si le portail est protégé par SSL (HTTPS)
- diminué (-1) si l'autocompletion est autorisée sur le portail (voir Personnalisation du portail)

### Variables exportées

Liste de colonnes à interroger pour trouver la session utilisateur. Voir aussi la configuration des variables exportées.

### Connexion

Les paramètres de connexion peuvent être configurés différemment pour les processus d'authentification et de recherche d'utilisateur. This allows one to use different databases for these process. Par défaut, si les paramètres de processus de connexion utilisateur sont vides , ceux d'authentification seront utilisés.

- Chaîne : chaîne DBI, contenant le nom de driver et le nom de la base de données (par exemple : dbi:mysql:database=lemonldapng;host=localhost).
- Utilisateur : compte de connexion
- Mot-de-passe : mot-de-passe du compte de connexion

### Schéma

- Table d'authentification : nom de la table d'authentification
- Table utilisateurs : nom de la table utilisateurs
- Nom du champ de compte : nom de la colonne de la table d'authentification contenant le login
- Nom du champ mot-de-passe : nom de la colonne de la table d'authentification contenant le mot-de-passe
- Nom du chmap mail : nom de la colonne de la table d'authentification contenant le mail (pour la réinitialisation du mot-de-passe)
- Nom du champ login dans la table utilisateur : nom de la colonne de la table utilisateur contenant le login

### Mot-de-passe

- Schéma de hachage : méthode SQL pour hacher les mots-de-passe. Peut être vide pour le stockage des mots-de-passe en clair.