Développement dapplications web Authentification, session
Besoins Conserver létat dune transaction Savoir quun utilisateur sest 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 dun état
Comment faire ? Utilisation de formulaires cachés Le contenu du formulaire peut être envoyé avec la requête suivante Utilisation des cookies
Quest-ce quun 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 dinformations 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 lutilisateur et notre système
Stockage sur le serveur Le cookie ne contient quun identifiant Lensemble 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 lon stock en session
Aventages La session permet: De conserver lidentification dune personne De suivre un état (passage par différentes étapes) …
Authentification Lauthentification est le moyen utilisé pour reconnaître un utilisateur Plusieurs solutions sont possibles: Authentification HTTP Authentification par un formulaire Lutilisation 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 => Cest à lutilisateur dêtre prudent
Cas général Utilisation dun 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 daccè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 lutilisateur est bien connecté Quil a un rôle lui donnant accès à cette page
Et Symfony ?
Et Symfony
Configuration
Utilisateurs en base de données ?
Utiliser un formulaire ?
Il faut que lURL /login soit accessible sans être authentifié, donc de manière anonyme:
Plus de détails ? y_provider.html
Questions ? 28