Développement dapplications web Authentification, session.
-
Upload
amauri-franco -
Category
Documents
-
view
129 -
download
2
Transcript of Développement dapplications web Authentification, session.
S
Développement d’applications web
Authentification, session
Besoins
Conserver l’état d’une transaction
Savoir qu’un utilisateur s’est déjà authentifié
Conserver un état quelconque Panier, etc.
http est « stateless »
Les requêtes sont indépendantes Pas de lien entre deux requêtes successives
Pas de mémoire d’un état
Comment faire ?
Utilisation de formulaires cachés Le contenu du formulaire peut être envoyé avec la
requête suivante
Utilisation des cookies
Qu’est-ce qu’un cookie ?
Un fichier contenant des informations
Un fichier joint à chaque requête faite à notre site
=> Permet de stocker des informations d’état
Stockage dans le cookie
Plus il y a d’informations dans le cookie plus celui-ci est lourd => requêtes plus lentes et plus lourdes
Les informations contenues dans le cookie peuvent-être modifiées ou interceptées => Problème de sécurité pour l’utilisateur et notre
système
Stockage sur le serveur
Le cookie ne contient qu’un identifiant
L’ensemble des données sont stockées sur le serveur
Limitations
La session peut-être usurpées si une personne vole le cookie Mise en place de sécurités supplémentaires
éventuelles
Une charge trop importante des sessions ralentit le serveur Prendre garde à ce que l’on stock en session
Aventages
La session permet: De conserver l’identification d’une personne De suivre un état (passage par différentes étapes) …
Authentification
L’authentification est le moyen utilisé pour reconnaître un utilisateur
Plusieurs solutions sont possibles: Authentification HTTP Authentification par un formulaire L’utilisation de clés (paire de clés public/privée
souvent) ID + nom de domaine
Authentification
Nécessite: Une liste des utilisateurs Le mot de passe (ou autre) associé à chaque
utilisateur
Stocker les identifiants
Dans un fichier sur le disque
Dans une base de données
En mémoire
Stocker les identifiants
Si ce sont des mots de passes Les crypter (SHA1, MD5, …)
Pour les paires de clé La clé privée ne doit pas être révélée => C’est à l’utilisateur d’être prudent
Cas général
Utilisation d’un formulaire pour la connexion Login Mot de passe
Les informations sont stockées en base de données
Envoi du formulaire
Envoi par HTTP Le mot de passe est transmis en clair au serveur
Envoi par HTTPS Les données envoyées sont cryptées Plus sécurisées mais loin d’être infaillible
Restriction d’accès
Chaque utilisateur a un ou des rôles Ou appartient à un ou des groupes
Il faut pour chaque page à accès restreint vérifier Que l’utilisateur est bien connecté Qu’il a un rôle lui donnant accès à cette page
Et Symfony ?
Et Symfony
Et Symfony
Et Symfony
Et Symfony
Configuration
Utilisateurs en base de données ?
Utiliser un formulaire ?
Utiliser un formulaire ?
Utiliser un formulaire ?
Il faut que l’URL /login soit accessible sans être authentifié, donc de manière anonyme:
Plus de détails ?
http://symfony.com/doc/current/book/security.html
http://symfony.com/doc/current/cookbook/security/entity_provider.html
28
Questions ?