développement dapplications web authentification, session

Post on 04-Apr-2015

124 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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:

28

Questions ?

top related