# Le portail

Le portail est le principal composant de LL::NG. Il fournit de nombreuses fonctionnalités :

- Le service d'authentification bien sûr
  - Basé sur du web pour les utilisateurs normaux :
    - utilisant une base de données propre (LDAP, SQL, …)
    - utilisant le système d'authentification d'Apache (utilisé pour SSL, Kerberos, l'authentification HTTP basique, …)
    - utilisant un fournisseur d'identité externe (SAML, OpenID, CAS, Twitter, autres systèmes LL::NG, …)
    - tous en même temps (basé sur le choix utilisateur, les règles, …)
  - Basé sur SOAP pour les logiciels client-serveur, les développements spécifiques, …
- Fournisseur d'identité : LL::NG peut fournir un service d'identité en utilisant :
  - SAML
  - OpenID
  - CAS
- Proxy de fournisseurs d'identités : LL::NG peut être utilisé comme traducteur mandataire entre systèmes comprenant SAML, OpenID, CAS, …
- Internal SOAP server used by SOAP configuration backend and usable for specific development (see SOAP services for more)
- Gestion interactive des mots-de-passe des utilisateurs:
  - Formulaire de changement de mot-de-passe (dans le menu)
  - Self-service de réinitialisation (envoie un mail à l'utilisateur pour changer son mot-de-passe)
  - Force password change with LDAP password policy password reset flag
- Menu des applications : affiche les applications autorisées dans les catégories
- Notifications : interrompt les utilisateurs avec un message s'il est trouvé dans la base de données des notifications

## Fonctionnement

Le portail LL::NG est un composant modulaire. Il a besoin de 4 modules pour fonctionner :

- Authentification : comment examiner les données utilisateur d'authentification
- Base de données utilisateurs : où collecter les informations utilisateurs
- Base de données des mots-de-passe : où changer le mot-de-passe
- Fournisseur d'identité : comment transférer l'identité

Chaque module peut être désactivé en utilisant le backend `Null`.

## Cinématique

1. Vérifie que l'URL demandée est validée
2. Vérifie si l'utilisateur n'est pas déjà authentifié
   - Si ce n'est pas le cas (ou si l'authentification est forcée) tente de le trouver (module userDB) et de l'authentifier (module d'authentification), crée la session, calcule les groupes et macros et les stocke Dans la version 1.3, LL::NG dispose d'une fonctionnalité "captcha" qui est utilisée dans ce cas.
3. Modifie le mot-de-passe si demandé
4. Fournit l'identitié si demandée
5. Construit le ou les cookies
6. Redirige l'utilisateur vers l'URL demandée ou affiche le menu

Voir aussi la présentation de la cinématique générale.