Projet

Général

Profil

Wiki » Historique » Version 2

Version 1 (Bruno Boiget, 10/10/2013 15:04) → Version 2/8 (Bruno Boiget, 10/10/2013 15:33)

h1. Eolelask-aaa

h2. Principe général:

Eoleflask-aaa comprend une

> Une librairie python (eoleauthlib)
> Une application 'racine' (eoleauth) à intégrer dans eoleflask

l'application est montée comme première application par eoleflask, et comporte 3 urls:

/login : page utilisée pour se connecter et créer une session globale (voir plus loin)
/logout : page de déconnexion pour la session globale
/eoleauth : affiche le nom d'utilisateur courant

La librairie offre différents plugins pour l'authentification (actuellement PAM-login et CAS) et plusieurs modes de gestion des sessions (fichiers côté serveur ou Redis en mode socket)

> Rqe: pour l'instant, le plugin CAS ne gère pas correctement la déconnexion centralisée. Si le serveur CAS envoie une requête de déconnexion, la session ne sera pas fermée.

Le principe de fonctionnement est d'importer une fonction d'initialisation et un décorateur (pour les fonctions des vues) dans les applications.

* La fonction d'initialisation va mettre en place la gestion des sessions et des cookies. 2 modes sont disponibles pour les cookies:

** session globale: toutes les applications utilisant ce mode partagent une même session (la page de login est /login)
* Lors de l'accès à une vue protégée, le décorateur va regarder si la session est ouverte (nom d'utilisateur présent).
* Si c'est le cas, le déroulement se poursuit normalement.
* Si il n'y a pas de session:
** Le décorateur va rediriger sur la page de login. login (/login en mode global, ou /application/login en mode local) et créer la session.
** Après authentification (gérée par le plugin d'authentification), la session est créée et authentification, l'utilisateur est ensuite redirigé sur la page d'origine (le où le décorateur va réitérer le processus à nouveau vérifier la validité de vérification).

h2. Intégration dans une application.

Pour activer l'authentification dans une application eoleflask, mettre
la session

Rqe: pour l'instant,
le code suivant dans plugin CAS ne gère pas correctement la déconnexion centralisée. Si le fichier de déclaration des vues (views.py en général):

*exemple dans le cas de genconfig:*

<pre>

from eolegenconfig import app
from eoleauthlib.authclient import login_required, init_authentication

init_authentication(app)

# exemple de route protégée (genconfig)
@app.route('/')
@login_required # ajouter ce décorateur à toutes les vues nécessitant
serveur CAS envoie une authentification
def root():
"""Entry point of the application
"""
return render_template('index.html')

@app.route('/user')
@login_required
def user():
"""Route for username retrieval
"""
return(make_json_response({'name':session.get('username', 'anonymous')}))

</pre>

L'appel à init_authentication(app) va effectuer les actions suivantes:

- initialiser l'interface
requête de gestion des sessions (par défaut, Redis si un serveur Redis est disponible, sinon les sessions sont stockées dans /root/.eoleauth)
- définir le nom de cookie de
déconnexion, la session (<eoleauth_session> si mode global, <genconfig_session> si mode local) ne sera pas fermée.
- ajouter automatiquement des routes /login et /logout locales à l'application (exemeple: /eolegenconfig/login)