# Serveur OpenID

Le protocole OpenID est obsolète, il faut maintenant utiliser OpenID-Connect.

## Présentation

LL::NG can act as an OpenID 2.0 Server, that can allow one to federate LL::NG with:

- Un autre système LL::NG configuré avec authentification OpenID
- N'importe quel client OpenID

LL::NG est compatible avec le protocole d'authentification OpenID version 2.0 et version 1.0. Ce peut être utilisé pour partager l'authentification et pour partager les attributs utilisateurs en suivant les spécifications OpenID Simple Registration Extension 1.0 (SREG).

Lorsque LL::NG est configuré en fournisseur d'identité OpenID, les utilisateurs peuvent partager leur authentification en utilisant [PORTAIL]/openidserver/[login] où :

- [PORTAIL] est l'URL du portail
- [login] est le nom de connexion (ou tout autre information de session, voir ci-dessous)

Exemple :

    http://auth.example.com/openidserver/foo.bar

## Configuration

Dans le manager, aller dans `Paramètres généraux` > `Modules fournisseurs` » `OpenID` et configurer :

- Activation : mettre à `Activé`.
- Chemin : laisser `^/openidserver/` sauf si le fichier de configuration Apache du portail a été modifiée.
- Règle d'utilisation : une règle pour autoriser l'usage de ce module, mettre 1 pour toujours l'autoriser.

Par exemple, pour n'autoriser que les utilisateurs authentifiés fortement :

    $authenticationLevel > 2

Le module Rewrite d'Apache doit être activé dans la configuration Apache du portail ou dans la configuration du portail Nginx.

Aller ensuite dans `Options` pour définir :

- Jeton secret : le jeton secret utilisé pour sécuriser les transmissions entre le client et le server OpenID (voir ci-dessous).
- Identificant OpenID : la clef de session utilisée pour correspondre au login OpenID.
- Domaines autorisés : liste blanche ou noire des domaines clients OpenID (voir ci-dessous).
- Associations SREG : liens entre les attributs SREG et les clefs de session (voir ci-dessous).

Si l'`identifiant OpenID` n'est pas renseigné, la donnée `Paramètres généraux` » `Journalisation` » `REMOTE_USER` est utilisée, mise à `uid` par défaut

### Attributs partagés (SREG)

SREG permet le partage de 8 attributs :

- Nick name
- Email
- Nom complet
- Date of birth
- Gender
- Postal code
- Country
- Langue
- Timezone

Chaque attribut SREG est associé à une clef de session utilisateur. Une clef de session peut être associée à un ou plusieurs attributs SREG.

Si le client OpenID demande des données utilisateurs, ceux-ci sont questionnés pour accepter ou non le partage.

### Sécurité

- LL::NG peut être configuré pour restreindre les échanges OpenID en utilisant les listes blanches ou noires de domaines.
- S'il n'est pas renseigné, le jeton secret est calculé en utilisant la clef de chiffrement générale.

Noter que le protocole SAML est plus securisé que OpenID, ainsi si les partenaires sont connus, preférer SAML.