# Variables

## Présentation

Les variables peuvent être utilisées dans les règles et en-têtes. Toutes les règles sont concernées :

- Règle d'accès à un hôte virtuel
- Préselection d'IDP SAML
- Ouverture de session
- …

Les variables sont stockées dans la session utilisateur. On peut distinguer plusieurs types de variables :

- les variables internes, gérées par LemonLDAP::NG
- les variables exportées collectées depuis le backend utilisateur
- les macro et groupes

En connaissant le nom d'une variable, il suffit de la préfixer avec un signe dollar pour l'utiliser, par exemple pour savoir si la variable `uid` contient `coudot` :

    $uid eq "coudot"

On peut inspecter une session utilisateur avec l'explorateur de sessions (accessible depuis le manager)

Ci-dessous sont documentées les variables internes.

## Modules

Enregistre les modules utilisés pour l'authentification, les données utilisateurs, les mots-de-passe, …

Clef | Description
--- | ---
_auth | Module d'authentication
_userDB | Module utilisateurs
_passwordDB | Module mots-de-passe
_issuerDB | Module fournisseur (peut-être multivalué)
_authChoice | Choix de l'utilisateur si le backend d'authentification Choice a été utilisé
_authMulti | Full name of authentication module (with `#label`) used in Multi
_userDBMulti | Full name of user module (with `#label`) used in Multi

## Connexion

Données concernant la première connexion au portail

Clef | Description
--- | ---
ipAddr | IP de l'utilisateur (peut être celle de l'en-tête X-Forwarded-For si des proxies agréés ont été configurés)
_timezone | Timezone de l'utilisateur, renseignée par javascript dans le formulaire d'authentification (vide si une autres méthode d'authentification est utilisée)
_url | URL utilisée avant d'être redirigé vers le portail (vide si le portail a été utilisé comme point d'entrée)

## Authentification

Données concernant le processus d'authentification.

Clef | Description
--- | ---
_session_id | Identifiant de session (porté par le cookie)
_user | Nom d'utilisateur trouvé dans le processus d'authentification
_password | Mot-de-passe fournit lors du processus d'authentification (seulement si le stockage du mot-de-passe dans la sessions est configuré)
authenticationLevel | Niveau d'authentification

## Dates

Clef | Description
--- | ---
_utime | Date et heure (timestamp) de la création de la session
startTime | Date et heure (timestamp) de la création de la session
updateTime | Date de la dernière modification de la session
_lastAuthnUTime | Date et heure (timestamp) de la dernière authentification

## SAML

Donnée relative au protocole SAML

Clef | Description
--- | ---
_idp | Nom de l'IDP utilisé pour l'authentification
_idpConfKey | Clef de configuration de l'IDP utilisé pour l'authentification
_samlToken | Jeton SAML
_lassoSessionDump | Dump de session Lasso
_lassoIdentityDump | Dump de l'identité Lasso

## Notifications

Clef | Description
--- | ---
_notification_id | Date de validation de la notification id

## Historique de connexion

Clef | Description
--- | ---
loginHistory | Table des connexion réussies ou échouées

## LDAP

Only with UserDB LDAP.

Clef | Description
--- | ---
dn | Nom distinct (distinguished name)

## OpenID

Clef | Description
--- | ---
_openid_id | Consentement de partage de l'attribut id via OpenID

## OpenID Connect

Clef | Description
--- | ---
OpenIDConnect_IDToken | ID Token
OpenIDConnect_OP | Configuration key of OP used for authentication
OpenIDConnect_access_token | OAuth2 Access Token used to get UserInfo data
_oidc_consent_scope_rp | Scope for which consent was given for RP rp
_oidc_consent_time_rp | Time when consent was given for RP rp

## Autres

Clef | Description
--- | ---
appsListOrder | Ordre des catégories dans le menu
_session_kind | Type of session (SSO, Persistent, …)