# documentation:2.0:start
Keywords: documentation,2.0,start

# Documentation for LemonLDAP::NG 2.0

## Installation

### Before installation

- Pré-requis et dépendances
- Upgrade notes

### Installation

- Installation depuis l'archive
- Installation sur Debian/Ubuntu avec les paquets
- Installation sur RHEL/CentOS avec les paquets
- Installation on Suse Linux Enterprise Server with packages
- Run in LemonLDAP::NG in Docker
- Node.js handler

### After installation

- Deploy Nginx configuration (recommended configuration)
- Deployer la configuration Apache

## Configuration

### Premiers pas

- Vue d'ensemble de la configuration
- Configurer le cookie SSO (Single Sign On) et l'URL du portail
- Paramètrer les redirections
- Définir les variables exportées
- Gérer les hôtes virtuels
- Configurer les spécificités des sessions

### Portail

- Présentation
- Personnalisation du portail
- Menu du portail
- Captcha
- Public pages

#### Bases de données d'authentification, des utilisateurs et des mots-de-passe

Official Backends | Authentification | Utilisateurs | Mot-de-passe
--- | --- | --- | ---
Active Directory | ✔ | ✔ | ✔
Apache (Basic, NTLM, OTP, ...) | ✔ |  |
CAS | ✔ |  |
SQL Databases | ✔ | ✔ | ✔
Démonstration | ✔ | ✔ | ✔
Facebook | ✔ | ✔ |
Kerberos | ✔ | ✔ | ✔
LDAP | ✔ | ✔ | ✔
Null | ✔ | ✔ | ✔
OpenID Connect | ✔ | ✔ |
PAM | ✔ |  |
Proxy LL::NG | ✔ | ✔ |
Radius | ✔ |  |
REST | ✔ | ✔ | ✔
SAML 2.0 / Shibboleth | ✔ | ✔ |
Slave | ✔ | ✔ |
SSL | ✔ |  |
Twitter | ✔ |  |
WebID | ✔ | ✔ |
Yubikey | ✔ |  |
Custom modules | ✔ | ✔ | ✔
Combo Backends | Authentification | Utilisateurs | Mot-de-passe
Choice by users | ✔ | ✔ | ✔
Combination of auth schemes | ✔ | ✔ |
Empiler de multiples backends | Deprecated, replaced by Combination
Obsolete Backends | Authentification | Utilisateurs | Mot-de-passe
OpenID | ✔ | ✔ |
LL::NG distant | ✔ | ✔ |
Second factor | Authentification |  |
U2F | ✔ |  |
External Second Factor (OTP, SMS,…) | ✔ |  |

#### Fournisseur d'identité

- Tous les protocoles de fournisseur d'identité peuvent être utilisés simultanément
- LemonLDAP::NG can be used as a proxy between those protocols

Protocol | Fournisseur de service | Fournisseur d'identité
--- | --- | ---
CAS 1.0 / 2.0 / 3.0 | ✔ | ✔
SAML 2.0 / Shibboleth | ✔ | ✔
OpenID 2.0 (obsolete) | ✔ | ✔
OpenID Connect | ✔ | ✔
Get parameters provider (for poor applications) | ✔ |

### Handlers

Handlers are software control agents to install on your web servers (Nginx, Apache or Node.js).

Handler type | Apache | Nginx | Node.js | Commentaire |
Main (default handler) | ✔ | ✔ | Partial (*) |  |
AuthBasic | ✔ | ✔ |  | Designed for some server-to-server applications |
CDA | ✔ | ✔ |  | For Cross Domain Authentication |
DevOps | ✔ | ✔ |  | Allows application developers to define their rules within the application |
Secure Token | ✔ | ✔ |  | Designed to secure dialog between a LLNG reverse-proxy and a remote app |
Service Token (Server-to-Server) | ✔ | ✔ |  | Designed to permits underlying requests (API-Based Infrastructure) |
Zimbra PreAuth | ✔ | ✔ |  |

(*): Node.js handler has not yet reached the same level of functionality.

### LLNG databases

#### Base de données de la configuration

LL::NG a besoin d'un dispositif de stockage de sa propre configuration (gérée par le manager). Choisir l'une des options suivantes :

Backend | Partageable | Commentaire
--- | --- | ---
File (JSON) |  | Not shareable between servers except if used in conjunction with SOAP or with a shared file system (NFS,…). Sélectionné par défaut lors de l'installation.
YAML |  | Same as File in YAML format instead of JSON
SQL (RDBI/CDBI) | ✔ | Recommended for large-scale systems. Prefer CDBI.
LDAP | ✔ |
MongoDB | ✔ |
SOAP | ✔ | Backend proxy à utiliser avec un autre backend de configuration. Peut être utilisé pour sécuriser un autre backend pour des serveurs distants.

On ne peut démarrer avec une configuration vide, il faut donc lire comment changer de backend de configuration pour convertir une configuration existante en une autre.

#### Base de données des sessions

Les sessions sont stockées en utilisant les modules de la famille Apache::Session. All Apache::Session style modules are usable except for some features.

If you plan to use LLNG in a large-scale system, take a look at Performance Test to choose the right backend. A Browseable SQL backend is generally a good choice.

Backend | Partageable | Explorateur de sessions | Resctriction d'ouverture de session | Expiration des sessions | Commentaire
--- | --- | --- | --- | --- | ---
File |  | ✔ | ✔ | ✔ | Pas partageable entre serveurs sauf si utilisé avec le backend de configuration SOAP ou un système de partage de fichiers (NFS,…). Sélectionné par défaut lors de l'installation.
SQL | ✔ | ✔ | ✔ | ✔ | Pas optimisé pour l'exlorateur de sessions et les fonctionnalités de session unique.
LDAP | ✔ | ✔ | ✔ | ✔
Redis | ✔ | ✔ | ✔ | ✔ | Le plus rapide. Doit être securisé par un contrôle d'accès réseau.
MongoDB | ✔ | ✔ | ✔ | ✔ | Doit être securisé par un contrôle d'accès réseau.
Browseable (SQL, Redis ou LDAP) | ✔ | ✔ | ✔ | ✔ | Optimisé pour l'explorateur de sessions et les fonctionnalités de session unique.
REST | ✔ | ✔ | ✔ | ✔ | Backend proxy à utiliser avec un autre backend de sessions. Peut être utilisé pour sécuriser un autre backend pour des serveurs distants.
SOAP | ✔ | ✔ | ✔ | ✔ | Backend proxy à utiliser avec un autre backend de sessions. Peut être utilisé pour sécuriser un autre backend pour des serveurs distants.

## Protection des applications

- Écrire les règles et en-têtes
- Variables qui peuvent être utilisées dans les règles et en-têtes
- Integrate vendor applications
- Integrate self-made applications
- Rejeu de formulaires
- Custom Handlers

### Well known compatible applications

Here is a list of well known applications that are compatible with LL::NG. A full list is available on vendor applications page.

## Fonctionnalités avancées

- Systèmes de notification
- Stockage du mot-de-passe en session
- Authentification inter-domaines (CDA)
- Contrôle d'accès basé sur les rôles (RBAC)
- Utiliser les fonctions personnalisées
- Utiliser les fonctions étendues
- Réinitialiser les mots-de-passe par mail (self-service)
- Create an account (self service)
- Propager les déconnexions aux applications
- Agent jeton sécurisé
- Agent AuthBasic
- DevOps Handler
- Handling server webservice calls
- Cage sécurisée
- Historique de connexion
- Support FastCGI
- Voir la liste complète des paramètres

## Mini howtos

- Modifier la protection du manager
- Configuration et sessions dans MySQL
- Configuration et sessions dans LDAP
- Accès à la configuration et aux sessions par SOAP
- Integration dans Active Directory (LDAP et Kerberos)
- Créer un proxy de protocoles (SAML vers OpenID, CAS vers SAML ,…)
- Convertir les en-têtes HTTP en variables d'environnement

## Exploitation

- Performances
- Sécurité
- SELinux
- Page de statut de l'agent
- Monitoring
- Journalisation
- Messages d'erreur
- Haute disponibilité

## Developer corner

To develop an handler, see:

- Handler architecture
- Custom handlers

To develop a portal plugin, see manpages:

- Lemonldap::NG::Portal
- Lemonldap::NG::Portal::Auth::Base
- Lemonldap::NG::Portal::Main::Issuer
- Lemonldap::NG::Portal::Main::Plugin

To add a new language (XX must be replace by your language code):

- Manager: translate `lemonldap-ng-manager/site/htdocs/static/languages/en.json` in `lemonldap-ng-manager/site/htdocs/static/languages/XX.json` and enable it in “lemonldap-ng.ini” file
- Portal: translate `lemonldap-ng-portal/site/htdocs/static/languages/en.json` in `lemonldap-ng-portal/site/htdocs/static/languages/XX.json` and enable it in “lemonldap-ng.ini” file
- Portal Mails: translate `lemonldap-ng-portal/site/templates/common/mail/en.json` in `lemonldap-ng-portal/site/templates/common/mail/XX.json`

To translate this doc (Manager help):

- Install OmegaT
- Launch “make XX-translation” and translate all
- Launch “make XX-doc” to build doc