28
S Développement d’applications web Authentification, session

Développement dapplications web Authentification, session

Embed Size (px)

Citation preview

Page 1: Développement dapplications web Authentification, session

S

Développement d’applications web

Authentification, session

Page 2: Développement dapplications 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.

Page 3: Développement dapplications web Authentification, session

http est « stateless »

Les requêtes sont indépendantes Pas de lien entre deux requêtes successives

Pas de mémoire d’un état

Page 4: Développement dapplications web Authentification, session

Comment faire ?

Utilisation de formulaires cachés Le contenu du formulaire peut être envoyé avec la

requête suivante

Utilisation des cookies

Page 5: Développement dapplications web Authentification, session

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

Page 6: Développement dapplications web Authentification, session

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

Page 7: Développement dapplications web Authentification, session

Stockage sur le serveur

Le cookie ne contient qu’un identifiant

L’ensemble des données sont stockées sur le serveur

Page 8: Développement dapplications web Authentification, session

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

Page 9: Développement dapplications web Authentification, session

Aventages

La session permet: De conserver l’identification d’une personne De suivre un état (passage par différentes étapes) …

Page 10: Développement dapplications web Authentification, session

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

Page 11: Développement dapplications web Authentification, session

Authentification

Nécessite: Une liste des utilisateurs Le mot de passe (ou autre) associé à chaque

utilisateur

Page 12: Développement dapplications web Authentification, session

Stocker les identifiants

Dans un fichier sur le disque

Dans une base de données

En mémoire

Page 13: Développement dapplications web Authentification, session

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

Page 14: Développement dapplications web Authentification, session

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

Page 15: Développement dapplications web Authentification, session

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

Page 16: Développement dapplications web Authentification, session

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

Page 17: Développement dapplications web Authentification, session

Et Symfony ?

Page 18: Développement dapplications web Authentification, session

Et Symfony

Page 19: Développement dapplications web Authentification, session

Et Symfony

Page 20: Développement dapplications web Authentification, session

Et Symfony

Page 21: Développement dapplications web Authentification, session

Et Symfony

Page 22: Développement dapplications web Authentification, session

Configuration

Page 23: Développement dapplications web Authentification, session

Utilisateurs en base de données ?

Page 24: Développement dapplications web Authentification, session

Utiliser un formulaire ?

Page 25: Développement dapplications web Authentification, session

Utiliser un formulaire ?

Page 26: Développement dapplications web Authentification, session

Utiliser un formulaire ?

Il faut que l’URL /login soit accessible sans être authentifié, donc de manière anonyme:

Page 28: Développement dapplications web Authentification, session

28

Questions ?