Clyde/Documents/JournalDeBord/authentification.md
Bartha Maxime 1383814e34
All checks were successful
Build and test backend / Build-backend (pull_request) Successful in 2m1s
Build and test backend / Test-backend (pull_request) Successful in 1m58s
Build and test FrontEnd / Build-frontend (pull_request) Successful in 20s
change ASCII to ISO_8859_1
2024-03-08 19:57:38 +01:00

1.8 KiB

Authentification

Contexte

Le projet demande de pouvoir authentifier les utilisateurs présents. Le but étant de leurs associer un "contexte" (cours, informations personnelles, ...). Pour que ceux-ci puissent accomplir différentes actions nécéssitantes une identification (permission, info personelles, ...).

Méthode

Lorsque qu'un utilisateur se connecte au serveur, nous lui envoyons un token qui sera stocké dans le navigateur. Ce token est unique à l'utilisateur et pourra être ré-envoyé dans les futures requêtes pour identifier l'utilisateur.

Ce token est donc une chaine de 64 caractères suivant la norme ISO_8859_1(8bits par cararctère) aléatoires,ce qui est d'après nos recherches suffisant.

De plus une limite de 5 token par utilisateur sera ajoutée de sorte à

  1. S'assurer qu'une personne ne noie la base de donnée de tokens.
  2. Ajouter une protection supplémentaire pour assurer qu'un token est bien unique à un utilisateur.

Autres méthodes envisagée

Oauth2

C'est un protocol d'identification vastement utilisé permettant, en plus d'identifier les requettes, de gérer leurs permissions. Un utilisateur créen un token peut lui attribuer des permissions spécifique qui restrainderaients les permissions d'utilisation de ce token. C'est très utile pour déployer des api de site pouvant notament être accédé par des ordinateurs / bots. Ca n'est en revanche pas l'objectif du projet et l'option n'a donc pas été retenue

Spring Sessions / Tomcat sessions

Il aurait été possible de laisser une librairie automatiser les sessions. Malheuresement, celà implique de devoir se plier au format de la dite librairie. L'implémentation d'un système de gestion de token maison semblai à la fois, non-imposible et interessant à notre apprentisage. C'est pourquoi nous n'avons pas utilisé cette option.