|
|
|
@ -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.
|
|
|
|
|
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
|
|
|
|
|
)
|
|
|
|
|
```
|