# Remote

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

Ce module fournit un protocole de fédération d'identité spécifique à LL::NG. Il est préférable d'utiliser des protocoles standards tels SAML, OpenID ou CAS.

## Présentation

- Le portail principal est configuré pour utiliser le CDA. Le portail secondaire est declaré dans le Manager du système LL::NG principal comme une application (sinon les utilisateurs seront rejetés).
- Le portail du système LL::NG secondaire est configuré pour déléguer l'authentification à un portail distant. Une requête à la base de données des sessions principale est effectuée (via le backend de session SOAP) pour être sûr que la session existe.
- Si `exportedAttr` est défini, seuls ces attributs sont copiés dans la base des sessions du système LL::NG secondaire. Sinon, toutes les données sont copiées.

1. Un utilisateur essaie d'accéder à une application du système LL::NG secondaire sans avoir de session dans cette aire
2. Redirection vers le portail secondaire (transparent)
3. Redirection vers le portail principal et authentification normale (sauf si déjà faite)
4. Redirection vers le portail secondaire (transparent)
5. Le portail secondaire vérifie que la session distante est valable. Ce peut être fait par accès direct à la base des sessions principale ou en utilisant une requête SOAP. Il crée la sessions (avec le filtre d'attributs)
6. L'utilisateur peut maintenant accéder aux applications

Noter que si l'utilisateur est déjà authentifié sur le premier portail, toutes les redirections sont transparentes.

## Configuration

### Système LL::NG principal

Aller dans le manager et :

- activer le CDA dans `Paramètres généraux` » `Cookies` » `Domaines multiples`
- declarer le second portail dans `Paramètres généraux` » `Paramètres avancés` » `Sécurité` » `Domaines approuvés`

### Systèe LL::NG secondaire

Configurer le portail pour qu'il utilise le système LL::NG distant.

Dans le manager, aller dans `Paramètres généraux` > `Modules d'authentification` et choisir Remote pour les modules authentification et utilisateurs.

Ensuite, aller dans les `paramètres Remote` :

- Portail URL: URL du portail distant
- Nom du cookie (optionnel) : nom du cookie du portail primaire, s'il est différent de celui du portail secondaire
- Module de sessions : mettre `Lemonldap::NG::Common::Apache::Session::SOAP` pour le backend de session SOAP.
- Options du module de sessions :
  - proxy: point d'accès SOAP (voir la documentation du backend de session SOAP)

### Exemple : interoperabilité entre 2 organisations

En utilisant ce système, on peut avoir une simple interopérabilité entre 2 organisations utilisant chacune leur système LL::NG :

- chacune a 2 portails:
  - Un portail standard
  - One remote portal that delegates authentication to the second organization (just another file on the same server)
- Le portail normal dispose d'un lien dans le formulaire d'authentification pointant vers le portail destiné aux utilisateurs de l'autre organisation

Ainsi sur chacun des portails principaux, les utilisateurs internes peuvent accéder normalement et les utilisateurs de l'autre organisation n'ont qu'à cliquer sur le lien :

1. Un utilisateur tente d'accéder au portail
2. L'utilisateur externe clique pour être redirigé vers le second portail
3. Après redirection, authentification normale sur le portail distant (celui de son organisation)
4. Redirection vers le portail de type remote
5. Validation de la session : l'utilisateur externe dispose ainsi d'un session locale