frontend web
------------


algorithme d'identification d'un frontend web::

    si on a un cookie contenant un magic_number:
        on reinitialise le time-out du cookie
        on affiche la page (le magic_number sera envoy au backend lors d'envoi de commandes,
                            et si il est invalide, la commande ne sera pas excute de toute facon)

    sinon:
        on regarde si on a 2 parametres dans l'url (app_ticket, id_session):
        si oui:
            on demande un magic_number au backend o l'on veut se connecter
            si on recoit un magic_number(ie: les parametres envoys sont vrifis/valids par le backend):
                on crit un cookie avec notre magic_number a l'interieur
                on se redirige sur nous meme, on tombe alors dans le premier cas o l'on a un cookie avec magic_number
            sinon:
                (requete forge (mauvais parametre) donc fausse?)
                on redirige sur la page d'authentification (avec parametre from pour savoir d'o l'on vient)
        sinon:
            (c'est la premiere fois qu'on arrive sur la page)
            on redirige sur la page d'authentification (avec parametre from pour savoir d'o l'on vient)



page d'authentification
-----------------------

algorithme de la page d'authentification::

    si on a un cookie contenant un session_id:
        on vrifie ce session_id vers le serveur d'authentification
        si session_id vrifi:
            on demande un ticket d'application au serveur d'authentification
            on redirige sur la page d'o l'on vient (parametre from) en passant en parametre app_ticket et session_id
        sinon:
            on demande a s'identifier (login/mot de passe)
    sinon:
        on demande a s'identifier (login/mot de passe)
 

algorithme de verification de login/mot de passe:: 
    
    on verifie le couple login/mot de passe vers le serveur d'authentification
    si il est bon:
        on ajoute un cookie contenant le session_id et le login de l'utilisateur
        on demande un ticket d'application au serveur d'authentification
        on redirige sur la page d'o l'on vient (parametre from) en passant en parametre app_ticket et session_id
    sinon:
        (mauvais couple login/mot de passe)
        on redirige sur la page d'authentification


`AutheticatedPage`
~~~~~~~~~~~~~~~~~~

::


        ###############################################
        ###############################################
        # diffrents cas lorsque l'on arrive sur la page:
        #   -on recupere MagicNumber dans le cookie (bonne valeur, valeur 'foo' ou pas de cookie)
        #   -si pas de parametre dans l'URL:
        #       - on rend la page
        #       on arrive ici dans plusieurs cas:
        #           - on arrive pour la 1e fois sur l'EAD, on est connect a aucun serveur, on a pas de cookie MagicNumber
        #           - on execute une action (URL/actions/nom_action), les informations importantes etant dans la session
        #                       (numero de serveur courant...)
        #
        #   -si des parametres dans l'URL:
        #
        #       - si parametre 'app_ticket', 'id_server' et 'server' en meme temps:
        #           cas o l'on revient de la page d'authentification (identification SSO)
        #           on obtient le magic_nb depuis le backend
        #       - si parametre 'local', 'magic_nb' et 'server' en meme temps:
        #           cas o l'on revient de la page d'authentification (identification locale sur le backend) 
        #
        #       Dans les 2 cas, on fait:
        #           -on met un cookie MagicNumber
        #           -et on se redirige sur nous meme en passant server en argument
        #
        #       - si parametre 'server' tout seul:
        #           cas o on veut se connecter a un serveur
        #           on verifie que serveur != serveur courant, dans ce cas on redirige sur
        #           la page d'authentification, et on dit serveur_courant = serveur
        #           si serveur == serveur courant, ne rien faire (on retourne et on rend la page)
        #


              
        # XXX: IE et Opera ne gerent pas les cookies de la meme maniere que Firefox
        # sous firefox, quand un cookie devient invalide (au niveau du temps), il est supprim
        # sous IE et Opera, ils sont gards, on doit donc tester si ils ont une valeur spciale, ici foo
