From ad62daf38f4ad484b028b81762374a49463c1684 Mon Sep 17 00:00:00 2001 From: RemRem Date: Thu, 26 Oct 2023 11:37:07 +0200 Subject: [PATCH] api auth desc --- api.md | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/api.md b/api.md index 28ce11e..60f823d 100644 --- a/api.md +++ b/api.md @@ -3,6 +3,9 @@ ## Links - [CRUD](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete) - [HTTP Status Codes](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status) +- [JWT.io](https://jwt.io/) +- [php_jwt](https://github.com/firebase/php-jwt) +- [Slim](https://www.slimframework.com/) ## Rappel **GET**: Récupère la ressource demandé. @@ -21,4 +24,34 @@ POST /user/{token}/files Upload d'un fichier par un user. GET /user/{token}/files/{file_uuid} Récupération d'un fichier par user. DELETE /user/{token}/files/{file_uuid} Suppression d'un fichier par user. PUT /user/{token}/mail Modification de l'email. -PUT /user/{token}/username Modification du username. \ No newline at end of file +PUT /user/{token}/username Modification du username. + +## Authentification +Les JWT sont composé de trois partie dont deux contenant des données: header et payload. +La troisième partie est la signature du JWT, elle peut utiliser une clé symétrique +ou asymétrique. +Dans notre cas nous utilisons une clé symétrique pour vérifier la signature du token +de l'utilisateur. +Si la signature n'est pas vérifié -> Erreur -> refait la connection. +Si vérifié -> OK -> utilise le uuid dans le token pour request la bdd. + +Structure du token: +```json +{ + "alg": "HS256", + "typ": "JWT" +}, +{ + "uuid": "15833c57-cd14-46f1-8334-e1f064847e1b", + "exp": 1698312785 +} +``` + +Signature: +``` +HMACSHA256( + base64UrlEncode(header) + "." + + base64UrlEncode(payload), + SERVER_SECRET_SYMETRIC_KEY +) +``` \ No newline at end of file