Clé API - dans le contenu ou l'en-tête


14

Travailler sur une API pour le moment et je voulais juste recueillir des opinions sur le meilleur endroit pour transmettre la clé API. Je sais que cela ne devrait pas aller dans l'URL, cela laisse l'en-tête de la demande ou le corps du message.

Si je le mets dans l'en-tête, je peux trouver une méthode générique pour le retirer qui peut être utilisée dans tous les services, mais la spécification que j'ai reçue le veut dans le corps (c'est-à-dire dans une chaîne JSON incluse dans le cadre de l'objet sérialisé dans le corps POST).


Notez également que tous les types de demande ne doivent pas avoir de corps et si vous souhaitez valider une demande sans corps, la clé devra être dans l'en-tête.
Whymarrh

Réponses:


11

En HTTP, il y a un en- Authorizationtête pour ça.

Bien qu'il soit généralement utilisé pour fournir les informations d'identification des utilisateurs, dans le cas d'une API, il peut contenir l'ID du client et la clé d'API correspondante.

Il y a plusieurs avantages:

  • Prise en charge de différents cadres. De nombreux frameworks attendent un en- Authorizationtête pour effectuer l'authentification. Ne pas l'utiliser forcera à écrire du code supplémentaire pour alimenter ces frameworks avec des valeurs personnalisées.

  • Prise en charge de différents outils. Par exemple CURL.

  • Moins «WTF où trouver / mettre cette clé API?!» De la part de nouveaux développeurs se joignant à l'équipe (ou de développeurs concevant de nouveaux clients pour votre API).

  • Vous pouvez ensuite utiliser des définitions de code d'état HTTP telles que 401 Unauthorized, pour lesquelles :

    La réponse DOIT inclure un champ d'en-tête WWW-Authenticate [...] Le client PEUT répéter la demande avec un champ d'en-tête d'autorisation approprié.

Le déplacer vers le corps de la demande peut devenir rapidement douloureux. La plupart des frameworks et des outils ne rendent pas très simple l'ajout d'un corps à une requête, ce qui peut rendre votre API plus difficile qu'elle ne devrait l'être.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.