-*- coding: utf-8 -*-

Documentation sur le module openid de eolesso
=============================================


Cookies
-------

Côté client (``oidclient.py``), il y a un cookie ``ead_openid`` qui sert
à stocker une clé de session nécessaire à ``python-openid`` pour retrouver
les informations de la requête originale dans son ``store``.


Fonctionnalités 
---------------

Provider
````````

OK : l'authentification simple 
OK : Authentification sur endpoint unique 
OK : Authoriser un client à obtenir des informations d'authentification
OK : fournir l'identification sous forme yadis (/yadis/user) 
OK : fournir l'identification du serveur en yadis (/serveryadis)
OK : sélection des informations que le provider renvoie au client (filtre sur infos disponibles dans CAS et / ou LDAP)
OK : selection des informations que l'on décide de fournir au ``client`` (utilisateur qui décide au cas par cas)
OK : traduire les bouts de texte 
OK : logout

KO : permettre à un utilisateur de dire qu'il ne veut veut pas
     selectionner les informations demandées par le client (cf. plus haut)

KO : l'authentification LDAP
KO : I forgot my password
KO : pouvoir définir des  endpoints multiples


Client
``````

OK : rediriger vers le provider pour authentification 
OK : lire les informations recues par le provider sur l'authentification
OK : standard icon for openid
OK : traduire les bouts de texte 


KO : fournir un morceau de code permettant une intégration facile dans une application
     existante (boite login, isAuthenticated) --> cf. unifier la gestion CAS

KO : logout
KO : association username "local" avec OpenID (et son formulaire *attach*)
KO : possibilté d'enlever une association userid <-> openid_url (et son formulaire de *detach*)
KO : each user can have multiple OpenIDs attached to their account, but a given OpenID can only be claimed by a single user

KO : gérer le retour incomplet des extensions "required" de eole

KO : enregistrer les URLs OpenID sous forme canonique (eg. http://www.MonDomaine.com/MonId/ -> http://www.mondomaine.com/MonId )
KO : intégrer la possibilité d'utiliser OpenID lors d'un formulaire d'enregistrement

KO : mettre à jour les infos étendus lorsque celle-ci changent (si elles sont stockées de manière persistente)
     Si cette information n'est pas stockée sur le client, cette fonctionnalité n'est pas importante
KO : fonctionner avec d'autres fournisseurs openid que eole



Provider and client 
```````````````````

KO : fournir un moyen de créer un compte openid
KO : se poser la question des ``stores`` les plus appropriés côté client
     et côté provider (MemStore, FileStore, DBStore, etc.)


Références 
``````````

Sources pour fonctionnalités possibles/souhaitables : 

  * http://www.plaxo.com/api/openid_recipe 
  * http://www.intertwingly.net/blog/2007/01/03/OpenID-for-non-SuperUsers
  * http://openid.net/developers/specs/


