Qu’est-ce que l’authentification ?
Vous comprenez de mieux en mieux comment fonctionnent les API. Vous savez :
qui sont le client et le serveur ;
qu'ils communiquent grâce au protocole HTTP ;
et qu'ils utilisent des formats spécifiques de données pour se comprendre.
Savoir parler, c'est génial, mais comment le serveur est-il sûr que le client est bien celui qu'il prétend être ?
Plus concrètement, quand vous vous authentifiez auprès d'un serveur, vous prouvez votre identité en lui donnant des informations que vous seul connaissez. Une fois que le serveur sait qui vous êtes, il peut vous faire confiance et vous donner accès aux ressources de votre compte.
C'est le même procédé pour les clients utilisant des API. Si vous êtes authentifié sur l'API, alors vous pouvez l'utiliser ! Il existe différentes techniques d'authentification :
authentification basique ;
authentification par clé ;
authentification Ouverte (OAuth).
Authentifiez l'API basiquement
L'authentification basique est la plus simple des authentifications ! Elle nécessite un nom d'utilisateur et un mot de passe. Techniquement :
le client prend ces deux identifiants et les transforme en une valeur unique, qu'il passe dans la requête HTTP ;
à réception de la requête HTTP, le serveur compare la valeur unique et les identifiants qu'il a enregistrés. Si le nom d'utilisateur et le mot de passe correspondent à ceux d'un utilisateur dans la liste, le serveur exécute la requête de l'utilisateur. Sinon, il retourne un code de statut spécial (401) pour dire au client que l'authentification a échoué et que la requête n'a pu être exécutée.
Authentifiez l'API avec une clé
Même si l'authentification basique est un système valide, l'identifiant utilisé pour accéder à l'API est le même que le compte utilisateur. Par analogie, c'est un peu comme si un hôtel vous donnait la clé de tout le bâtiment plutôt que celle de votre chambre !
Pour résoudre ce problème, il existe une technique : accéder à l'API par une clé unique ! La clé est généralement une série de lettres et chiffres différents du mot de passe de votre compte. Celui-ci donne la clé au client, tout comme un hôtel vous donne la clé de votre chambre. Techniquement :
le client s'authentifie au moyen de la clé API. Cette dernière peut être passée en paramètre de l'URL : http://monsiteweb.com?api_key=my_secret_key ;
le serveur sait qu'il peut lui donner accès aux ressources. Mais plus encore !
En effet, le serveur a aussi l'option de limiter l'accès à certaines fonctions administratives, comme changer les mots de passe ou effacer des comptes. Mais le rôle de la clé peut être d'éviter que l'utilisateur n'ait à donner son mot de passe : les clés d'authentification API peuvent donc servir à limiter le contrôle ou à protéger les mots de passe de l'utilisateur.
Dans cette vidéo de démonstration, nous allons voir comment récupérer un token pour s'authentifier :
Authentifier par clé d'API est intéressant, mais n'existe-t-il pas un autre système d'authentification plus sécurisé ? Eh bien si : l'autorisation ouverte ou "Open Authorization", plus couramment appelée OAuth.
Authentifiez l'API avec OAuth2
Travailler avec des clés API, ce n'est pas forcément facile tous les jours (fautes de frappe, l'utilisateur doit obtenir la clé du serveur, puis la donner au client) ! Vous voulez une autre solution ? OAuth2.
Malgré ce nom qui peut paraître pompeux, c'est la technique la plus utilisée sur le web actuellement.
Par exemple, lorsque vous utilisez un client Twitter sur smartphone ou sur ordinateur, à chaque fois que vous voulez poster un message, l’application ne vous demande pas votre mot de passe ! L’application en question a simplement eu besoin que vous l’autorisiez à un moment donné. Ainsi, vos identifiants ne sont pas transmis à chaque requête. C'est simple, n'est-ce pas ? :D
Vous savez tout maintenant sur l'authentification d'une API ! Vous souhaitez découvrir d'autres API ? Rendez-vous dans le prochain chapitre !