110 votes

Clés de l’API vs HTTP authentification vs OAuth dans une API RESTful

Je suis en train de travailler sur la construction d'une API RESTful pour l'une des applications que j'maintenir. Nous sommes actuellement à la recherche à la construction de diverses choses qui exigent plus de contrôle d'accès et la sécurité. Alors que des recherches sur la façon d'aller sur la sécurisation de l'API, j'ai trouvé quelques opinions différentes sur ce formulaire à utiliser. J'ai vu quelques ressources HTTP-Auth est le chemin à parcourir, tandis que d'autres préfèrent clés API, et même les autres (y compris les questions que j'ai trouvé ici sur DONC) ne jurent que par OAuth.

Alors, bien sûr, ceux qui préfèrent les, disons, clés API, dire que OAuth est conçu pour les applications d'accès pour le compte d'un utilisateur (comme je le comprends, tels que la signature dans une situation de non-Facebook site à l'aide de votre Facebook compte), et pas pour un utilisateur directement accéder à des ressources sur un site qu'ils ont spécifiquement signé pour (comme le Twitter officiel de la client qui accède aux serveurs Twitter). Toutefois, les recommandations pour OAuth semblent être de même pour le plus fondamental des besoins d'authentification.

Ma question, alors, est - en supposant que tout se fait via le protocole HTTPS, quelles sont les différences concrètes entre les trois? Quand doit-on être considéré comme sur les autres?

68voto

Sid Points 4070

Cela dépend de vos besoins. Avez-vous besoin de:

  • L'identité – qui prétend faire une demande d'API?
  • Authentification – sont-ils vraiment qui ils disent qu'ils sont?
  • Autorisation – sont-ils autorisés à faire ce qu'ils essaient de faire?

ou tous les trois?

Si vous avez juste besoin d'identifier l'appelant pour garder une trace de volume ou le nombre d'Appels de l'API, de l'utilisation d'une simple Clé API. Gardez à l'esprit que si l'utilisateur que vous avez émis la clé API partage avec quelqu'un d'autre, ils seront en mesure d'appeler votre API.

Mais, si vous besoin de l'Autorisation ainsi, c'est que vous devez fournir l'accès uniquement à certaines ressources, basé sur l'appelant de l'API, puis utiliser oAuth.

Voici une bonne description: http://blog.apigee.com/detail/do_you_need_api_keys_api_identity_vs._authorization/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X