Advertisement
Guest User

Untitled

a guest
May 29th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.07 KB | None | 0 0
  1. Revenons sur la notion d’authentification et voyons ce qui est possible avec une application web monopage.
  2.  
  3. Session et cookies
  4. Sessions
  5. En plus de ce que nous savons déjà sur le protocol HTTP, il est bon que nous ajoutons que HTTP est un protocole dit « sans état », le serveur traite les requêtes sans garder de traces des précédentes. C’est la qu’intervient le mécanisme dit des sessions qui permet de conserver temporairement une trace de l’utilisateur.
  6. Le principe est simple : à la première connexion établit avec le serveur, un identifiant de sessions nous est attribué, cet identifiant sera par la suite renvoyé au serveur à chaque requête et permettra une association avec un utilisateur.
  7. Pour conserver cette session, client et serveur possèdent différents atouts. Dans un premier temps, coté serveur, on conservera simplement notre sessions en mémoire. Cette approche est la plus simple mais déconseillé en production (Dans le cas ou le nombre de sessions augmente, la mémoire)
  8. Coté client, il y a deux grandes méthodes pour gérer les sessions : les cookies ou le webstorage. Le webstorage permet quand meêm de stocker un plus grand nombres de données.
  9. Cookies
  10. Nous avons tous déjà eu à faire au cookie, rappelons nous de quoi il s’agit, ce sont de simples fichiers texte non exécutables et bien qu’il ne soit pas limités à cet usage, on s’en sert souvent pour les questions de sessions.
  11.  
  12. Sécurisation par tokens (jetons)
  13. Il s’agit d’une autre méthode, couramment utilisée dans les services web, il est question ici de tokens ou jetons. La technique est un peu différente, car on ne conserve pas la sessions entre le client et le serveur (On dit que l’authentification par token est donc Stateless)
  14. Pour que nous comprenions mieux les différences, voici une illustrations de connexion d’un utilisateur avec d’une part les sessions et d’autre part son équivalent avec les jetons.
  15. AuthSessions
  16.  
  17. AuthToken
  18. Dans le cas des jetons, nous voyons clairement qu’aucune session n’est conservée. Il va simplement décoder le code renvoyé par le client au format JSON.
  19.  
  20. Quelles sont les avantages que nous pouvons en tirer ? En effet, les avantages d’une authentification par jeton par rapport aux cookies sont nombreux.
  21. Plus grand découplage possible
  22. Le découplage entre le client et le serveur est totalement claire grâce à l’authentification par jetons. En effet, contrairement aux sessions, les jetons du à leur aspect « sans etat » ne nous obligent pas, à conserver en sessions, les traces de l’utilisateur.
  23. Protection contre les attaques CSRF
  24. Une attaque dite CSRF (Cross-Site Request Forgery ) consiste à se servir des données de session de l’utilisateur attaqué pour contourner une protection.
  25. Prenons un exemple pour mieux vous l’expliquer, Imaginons que l’attaquant possède un lien de suppression d’article sur un blog. Bien entendu, s’il tente lui-même d’effectuer l’action, le serveur lui demandera de s’authentifier.
  26. Il peut outrepasser cette sécurité en envoyant le lien (généralement caché) à une personne possédant une session en cours. Alors l’action s’effectuera au nom de l’utilisateur attaqué.
  27. Tout d’abord dans le cas des jetons, il n’est pas question de session. En plus de ça, les jetons sont générés à la volé et vérifiés parle serveur. Attention, cela n’assure en aucun cas que les jetons fournissent une sécurité parfaite. Mais du moins ce genre d’attaques sont évités.
  28. Meilleur performances
  29. Cela vaut surtout pour de grosse architecture, mais le faite de ne plus devoir aller chercher les données de sessions, il est possible de gagner en performances.
  30. L’authentification par jetons
  31. Finalement, j’ai décidé d’utiliser l’authentification par jetons, pour une meilleure compréhension j’ai décidé de séparer les modifications apportées aux back-end et au front-end.
  32. Le back-end
  33. Pour ce qui est d’intégrer l’authentification par jetons avec rails il suffit d’inclure à ApplicationController deux implémentations Active Record. Pour ce faire nous utilisons les deux lignes suivantes :
  34.  
  35. Inc ludeAuth
  36. Nous avons maintenant accès à deux méthodes très utiles dont nous voyons l’implémentation ci-dessous :
  37.  
  38. Implé1
  39. Rien de nouveau, nous faisons une authentification de ce qui a de plus simple avec un email et un mot de passe. Si l’authentification est reussie, nous envoyons au travers d’un objet JSON le token correspondant.
  40. Implé2
  41. Par contre ici, on vérifie si la session est valide par le token, mais cette méthode est inutile seule car n’est jamais appelé. Il faut ajouter une ligne, pour qu’elle soit appelé à chaque requête.
  42.  
  43. Impl3
  44. Ce dernier ajout permet de s’assurer que la vérification par token sera faite avant d’excuter quoi que ce soit. Sauf dans ce cas ci pour la routine token.
  45.  
  46. Quant à la création, il se fait au moment ou l’ont créé pour la première fois l’utilisateur. Pour ce faire on ajoute ces lignes de code au niveau du modèle Utilisateur.
  47. Impl4
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement