API avec autorisation en PHP
Il est possible de rendre une API non publique mais privée, accessible uniquement par mot de passe. Dans ce cas, lors de l'appel à notre API, chaque requête devra inclure, en plus des paramètres, le mot de passe correct. Un tel mot de passe est appelé jeton (token).
Les utilisateurs de notre API devront obtenir ce jeton d'une manière ou d'une autre. Par exemple, en l'achetant. Dans ce cas, chaque acheteur aura son propre jeton.
Voyons le fonctionnement avec les jetons sur un exemple. Supposons que notre API prenne un nombre en paramètre et renvoie le carré de ce nombre. Rendons cette API privée. Passons à la mise en œuvre.
Pour commencer, pour plus de simplicité, créons un jeton unique et stockons-le en clair dans un fichier :
<?php
$token = '12345';
?>
Voici comment nous appellerons notre API, en transmettant le paramètre et le jeton :
http://api.loc/index.php?num=100&token=12345
Implémentons l'API avec la vérification du jeton :
<?php
$token = '12345';
if (isset($_GET['token']) and $_GET['token'] === $token) {
if (isset($_GET['num'])) {
echo $_GET['num'] ** 2;
} else {
echo 'error';
}
} else {
echo 'incorrect token';
}
?>
Créez une API qui prendra en paramètre la date d'anniversaire et renverra le nombre de jours restant jusqu'à cette date. Implémentez une autorisation par jeton.
Modifiez la tâche précédente pour que le paramètre et le jeton soient transmis par la méthode POST.
Modifiez la tâche précédente pour
que le jeton soit transmis via l'en-tête HTTP
X-Token.
Faites en sorte que les jetons soient stockés dans une base de données et que chaque utilisateur de l'API ait son propre jeton.
Limitez pour chaque utilisateur de l'API
le nombre de requêtes à 10
par jour.