Modifications entre les versions 5 et 9 (s'étendant sur 4 versions)
Version 5 à la date du 2010-03-26 15:20:40
Taille: 2923
Éditeur: CyrilRobert
Commentaire:
Version 9 à la date du 2010-08-05 14:33:00
Taille: 3277
Éditeur: CyrilRobert
Commentaire: Authentification ROA est maintenant un aspect de References
Texte supprimé. Texte ajouté.
Ligne 1: Ligne 1:
## page was renamed from Python/AuthentificationROA
Ligne 12: Ligne 13:
Voir le projet sur [[https://redmine.auf.org/projects/roa-authentification|redmine]]. Voir le projet sur [[https://redmine.auf.org/projects/references|redmine]].
Ligne 16: Ligne 17:
Le service a été installé sur authentification.auf.org. L'application en arrière est sur git, [[http://git.auf.org/?p=auf_roa_authentification.git;a=tree|auf_roa_authentification]]. Le service permettant l'authentification a distance a été remplacé par le système "références", qui centralise les données de référence. Le service a été installé sur references.auf.org.
L'application en arrière est sur git, [[http://git.auf.org/?p=auf_references.git;a=tree|auf_references]].
Ligne 23: Ligne 25:
Pour nimporte quelle application Django souhaitant utiliser ce système, un backend existe: [[http://git.auf.org/?p=auf_roa_authentification_backend.git;a=tree|auf_roa_authentification_backend]]. Il est publié sur le pypi de l'AUF, donc dans le cas d'un buildout, on peut simplement l'ajouter dans la section ''eggs''. Pour nimporte quelle application Django souhaitant utiliser ce système, le client django de ce service fournit un backend d'authentification: [[http://git.auf.org/?p=auf_references_client.git;a=tree|auf_references_client]].
Il est publié sur le pypi de l'AUF, donc dans le cas d'un [[Python/Buildout|buildout]], on peut simplement l'ajouter dans la section ''eggs''.

Exemple de buildout:
{{{
[buildout]
parts = django
find-links = http://pypi.auf.org/auf_references_client/
    http://pypi.auf.org/auf_references_modeles/

[django]
recipe = djangorecipe
version = 1.1.1
project = auf_ninja
wsgi=true
settings=production
extra-paths = auf_ninja
eggs = django_exportateur
       auf_references_client
}}}
Ligne 29: Ligne 50:
    'auf_roa_authentification_backend',
Ligne 33: Ligne 53:
    'auf_roa_authentification_backend.backends.CascadeBackend',     'auf_references_client.backends.CascadeBackend',
Ligne 35: Ligne 55:
AUTH_PASSWORD_REQUIRED=True
ROA_MODELS = True # set to False if you'd like to develop/test locally
ROA_FORMAT = 'django'
ROA_HEADERS = {
    'Content-Type': 'application/x-www-form-urlencoded',
}
ROA_DJANGO_ERRORS = True # useful to ease debugging if you use test server
AUTH_PASSWORD_REQUIRED = True
Ligne 43: Ligne 57:
ROA_BASE_URL = 'https://authentification.auf.org/auth/'
Ligne 45: Ligne 58:
from auf_references_client.settings import *
TEMPLATE_DIRS.extend(REFERENCES_TEMPLATE_DIRS)
Ligne 46: Ligne 61:
SERIALIZATION_MODULES = {
    'django' : 'auf_roa_authentification_backend.serializers',
}
# Pour activer la cache sur memcached local
# (cache les requetes ROA en plus de la cache locale)
CACHE_BACKEND = 'memcached://localhost:11211/'
Ligne 64: Ligne 79:
https://authentification.auf.org/auth/user/?filter_email=blabla@auf.org&filter_password=<md5 du mot de passe>&format=json&api-key=<api-key> https://references.auf.org/roa/user/?filter_email=blabla@auf.org&filter_password=<md5 du mot de passe>&format=json&api-key=<api-key>

ROA

Le projet django-roa permet de créer un système de sérialisation/dé-sérialisation d'objets en passant par une couche HTTP, tout en maintenant un API compatible avec l'ORM de Django.

Authentification

Un système d'authentification centralisé utilisant django-roa est en ce moment en essai sur certains systèmes à Montréal (ex. http://pypi.auf.org/).

Voir le projet sur redmine.

Service

Le service permettant l'authentification a distance a été remplacé par le système "références", qui centralise les données de référence. Le service a été installé sur references.auf.org. L'application en arrière est sur git, auf_references.

Clients

Django

Pour nimporte quelle application Django souhaitant utiliser ce système, le client django de ce service fournit un backend d'authentification: auf_references_client. Il est publié sur le pypi de l'AUF, donc dans le cas d'un buildout, on peut simplement l'ajouter dans la section eggs.

Exemple de buildout:

[buildout]
parts = django
find-links = http://pypi.auf.org/auf_references_client/
    http://pypi.auf.org/auf_references_modeles/

[django]
recipe = djangorecipe
version = 1.1.1
project = auf_ninja
wsgi=true
settings=production
extra-paths = auf_ninja
eggs = django_exportateur
       auf_references_client

Ce backend nécessite plusieures options de configuration:

INSTALLED_APPS += (
    'django_roa',
)

AUTHENTICATION_BACKENDS = (
    'auf_references_client.backends.CascadeBackend',
)
AUTH_PASSWORD_REQUIRED = True

ROA_CUSTOM_ARGS = {'api-key': ROA_API_KEY}
from auf_references_client.settings import *
TEMPLATE_DIRS.extend(REFERENCES_TEMPLATE_DIRS)

# Pour activer la cache sur memcached local
# (cache les requetes ROA en plus de la cache locale)
CACHE_BACKEND = 'memcached://localhost:11211/'

ROA_API_KEY doit être défini dans conf.py.

Le backend s'appelle Cascade puisqu'il va vérifier d'abord par ROA si le compte existe et si le mot de passe est valide. Dans ce cas, il fait une copie locale de compte. Le cas échéant, il va regarder s'il existe un compte local valide, ce qui nous permet de valider les comptes de l'AUF automatiquement, mais aussi de pouvoir avoir des utilisateurs locaux, au cas ou ce serait nécessaire.

Autres

Le service d'authentification est suffisamment souple pour pouvoir être utilisé dans d'autres contextes que Django. Le client a besoin des choses suivantes:

  • Capable de lire et écrire en http
  • Capable de parser du json ou du xml

Par exemple, pour vérifier l'utilisateur blabla@auf.org en json, il faut charger l'url suivante:

https://references.auf.org/roa/user/?filter_email=blabla@auf.org&filter_password=<md5 du mot de passe>&format=json&api-key=<api-key>

Le contenu retourné sera assez explicite: une erreur 404 signifie que l'utilisateur n'existe pas, par exemple.

References (dernière édition le 2010-08-11 14:06:20 par CyrilRobert)