Sso
====


.. image:: images/sso.png
   :align: center

logging
-------

1. envoi du login ~ mdp sur le serveur sso
2. si login, mdp bon, le serveur sso renvoie un `session_id`
3. pour se connecter au backend, le frontend se reconnecte au sso en
   renvoyant son `session_id`
4. le sso lui renvoie un `ticket` (valable très peu de temps)
5. le frontend fait une demande de connexion au backend en envoyant le
   `ticket`
6. le backend vérifie la validité du `ticket` auprès du sso
7. le sso répond oui ou non à la question "le ticket est-il valide"
8. le backend envoie un `magic_number` au front-end
9. à chaque communication avec le backend, le front-end devra fournir
   le `magic_number` que le backend vérifiera à chaque fois
   (le backend stocke en interne tous les `magic_number` valides).


.. note:: le `magic_number` expire au bout d'un certain temps (temps
          réinitialisé à chaque action exécutée). Une fois que le
          magic_number a expiré,le front-end doit recommencer
          la séquence d'authentification.

.. glossary::
    magic number
        ticket de session fournit par le serveur de commande à l'agrégateur,
        ce ticket est par la suite fournit à chaque action éxécutée,
        sa durée de vie est alors acrue.
