Wiki » Historique » Version 2
Bruno Boiget, 10/10/2013 15:33
| 1 | 1 | Bruno Boiget | h1. Eolelask-aaa |
|---|---|---|---|
| 2 | 1 | Bruno Boiget | |
| 3 | 1 | Bruno Boiget | h2. Principe général: |
| 4 | 1 | Bruno Boiget | |
| 5 | 1 | Bruno Boiget | Eoleflask-aaa comprend une |
| 6 | 1 | Bruno Boiget | |
| 7 | 1 | Bruno Boiget | > Une librairie python (eoleauthlib) |
| 8 | 1 | Bruno Boiget | > Une application 'racine' (eoleauth) à intégrer dans eoleflask |
| 9 | 1 | Bruno Boiget | |
| 10 | 1 | Bruno Boiget | l'application est montée comme première application par eoleflask, et comporte 3 urls: |
| 11 | 1 | Bruno Boiget | |
| 12 | 1 | Bruno Boiget | /login : page utilisée pour se connecter et créer une session globale (voir plus loin) |
| 13 | 1 | Bruno Boiget | /logout : page de déconnexion pour la session globale |
| 14 | 1 | Bruno Boiget | /eoleauth : affiche le nom d'utilisateur courant |
| 15 | 1 | Bruno Boiget | |
| 16 | 1 | Bruno Boiget | 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) |
| 17 | 1 | Bruno Boiget | |
| 18 | 2 | Bruno Boiget | > 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. |
| 19 | 2 | Bruno Boiget | |
| 20 | 1 | Bruno Boiget | Le principe de fonctionnement est d'importer une fonction d'initialisation et un décorateur (pour les fonctions des vues) dans les applications. |
| 21 | 2 | Bruno Boiget | |
| 22 | 2 | Bruno Boiget | * La fonction d'initialisation va mettre en place la gestion des sessions et des cookies. 2 modes sont disponibles pour les cookies: |
| 23 | 2 | Bruno Boiget | ** session globale: toutes les applications utilisant ce mode partagent une même session (la page de login est /login) |
| 24 | 1 | Bruno Boiget | * 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). |
| 25 | 1 | Bruno Boiget | * Si c'est le cas, le déroulement se poursuit normalement. |
| 26 | 1 | Bruno Boiget | * Si il n'y a pas de session: |
| 27 | 2 | Bruno Boiget | ** Le décorateur va rediriger sur la page de login. |
| 28 | 2 | Bruno Boiget | ** Après authentification (gérée par le plugin d'authentification), la session est créée et l'utilisateur est redirigé sur la page d'origine (le décorateur va réitérer le processus de vérification). |
| 29 | 1 | Bruno Boiget | |
| 30 | 2 | Bruno Boiget | h2. Intégration dans une application. |
| 31 | 1 | Bruno Boiget | |
| 32 | 2 | Bruno Boiget | Pour activer l'authentification dans une application eoleflask, mettre le code suivant dans le fichier de déclaration des vues (views.py en général): |
| 33 | 2 | Bruno Boiget | |
| 34 | 2 | Bruno Boiget | *exemple dans le cas de genconfig:* |
| 35 | 2 | Bruno Boiget | |
| 36 | 2 | Bruno Boiget | <pre> |
| 37 | 2 | Bruno Boiget | |
| 38 | 2 | Bruno Boiget | from eolegenconfig import app |
| 39 | 2 | Bruno Boiget | from eoleauthlib.authclient import login_required, init_authentication |
| 40 | 2 | Bruno Boiget | |
| 41 | 2 | Bruno Boiget | init_authentication(app) |
| 42 | 2 | Bruno Boiget | |
| 43 | 2 | Bruno Boiget | # exemple de route protégée (genconfig) |
| 44 | 2 | Bruno Boiget | @app.route('/') |
| 45 | 2 | Bruno Boiget | @login_required # ajouter ce décorateur à toutes les vues nécessitant une authentification |
| 46 | 2 | Bruno Boiget | def root(): |
| 47 | 2 | Bruno Boiget | """Entry point of the application |
| 48 | 2 | Bruno Boiget | """ |
| 49 | 2 | Bruno Boiget | return render_template('index.html') |
| 50 | 2 | Bruno Boiget | |
| 51 | 2 | Bruno Boiget | @app.route('/user') |
| 52 | 2 | Bruno Boiget | @login_required |
| 53 | 2 | Bruno Boiget | def user(): |
| 54 | 2 | Bruno Boiget | """Route for username retrieval |
| 55 | 2 | Bruno Boiget | """ |
| 56 | 2 | Bruno Boiget | return(make_json_response({'name':session.get('username', 'anonymous')})) |
| 57 | 2 | Bruno Boiget | |
| 58 | 2 | Bruno Boiget | |
| 59 | 2 | Bruno Boiget | </pre> |
| 60 | 2 | Bruno Boiget | |
| 61 | 2 | Bruno Boiget | L'appel à init_authentication(app) va effectuer les actions suivantes: |
| 62 | 2 | Bruno Boiget | |
| 63 | 2 | Bruno Boiget | - initialiser l'interface de gestion des sessions (par défaut, Redis si un serveur Redis est disponible, sinon les sessions sont stockées dans /root/.eoleauth) |
| 64 | 2 | Bruno Boiget | - définir le nom de cookie de session (<eoleauth_session> si mode global, <genconfig_session> si mode local) |
| 65 | 2 | Bruno Boiget | - ajouter automatiquement des routes /login et /logout locales à l'application (exemeple: /eolegenconfig/login) |