Je conçois une API REST à l'aide d'une autorisation / authentification via une clé API.
J'ai essayé de trouver le meilleur endroit pour cela et j'ai découvert que beaucoup de gens suggèrent d'utiliser un en-tête HTTP personnalisé tel que ProjectName-Api-Key
, par exemple:
ProjectName-Api-Key: abcde
mais il est également possible et idéologiquement correct d'utiliser l'en- Authorization
tête avec un schéma personnalisé, par exemple:
Authorization: ApiKey abcde
D'un autre côté, j'ai constaté qu'un schéma d'autorisation personnalisé peut être inattendu et non pris en charge par certains clients et conduit à un code personnalisé de toute façon, il est donc préférable d'utiliser un en-tête personnalisé car les clients n'ont aucune attente à ce sujet.
De quelle manière préféreriez-vous envoyer une clé API?
Bearer
schéma est utilisé exclusivement avec oAuth2. Son application séparément de oAuth semble une mauvaise utilisation. Pourquoi est-il correct d'utiliser ce schéma s'il n'y a pas d'oAuth? Au fait, j'ai eu du mal à choisir un type d'autorisation pour mon API. L'API ne sera disponible que pour un service de confiance, j'ai donc étudié le flux des informations d'identification client de oAuth2 et je n'ai trouvé aucun avantage par rapport à ApiKey dans mon cas.
ApiKey
était renommée et interprétée comme Access Token
accordée au client sans délai d'expiration. C'est une sorte d'aspect philosophique, j'ai décidé de ne pas apporter de définitions complexes si mon cas peut être décrit en termes simples et j'ai décidé de simplement l'appeler "ApiKey". Si votre protocole implémente oAuth standart, je peux accepter l'utilisation Bearer
, mais ce n'est pas le cas, je suppose que ce schéma ne peut pas être appliqué.
Authorization: Bearer <token>
tête et il n'y a jamais eu un seul problème avec cela. Les jetons sont des JWT .