6 api
RemRem edited this page 1 year ago

API

Documentation de l'API

Rappel

GET: Récupère la ressource demandé.
HEAD: GET - body.
POST: Création d'une ressource envoyé dans le body.
PUT: POST + remplacement.
PATCH: Modification d'une ressource.
DELETE: Supprime la ressource spécifié.

Endpoints

POST /user/ Création d'un user.
DELETE /user/{token} Suppression d'un user.
GET /user/{uuid}/{hash}/token Récupération d'un token valide.
GET /user/{token}/files Récupération de la liste des fichier de donnée.
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.

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:

{
  "alg": "HS256",
  "typ": "JWT"
},
{
  "uuid": "15833c57-cd14-46f1-8334-e1f064847e1b",
  "exp": 1698312785
}

Signature:

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  SERVER_SECRET_SYMETRIC_KEY
)