web-dev-qa-db-fra.com

Qu'est-ce qu'un jeton d'API

J'essaie de trouver la meilleure façon de gérer l'authentification des utilisateurs pour mon application mobile (iOS et Android) et mon API (PHP).

D'après ce que j'ai recherché, les options sont les suivantes:

Authentification de base sur HTTPS - Vérifiez le nom d'utilisateur/mot de passe de l'utilisateur pour chaque demande.

Sessions - Envoyer un identifiant de session avec chaque demande; le serveur maintient l'état. Ainsi, l'application envoie un nom d'utilisateur/mot de passe et des vérifications de serveur pour un utilisateur connecté lors de demandes ultérieures, tout comme mon site Web le fait.

jetons API - L'application mobile envoie le nom d'utilisateur/mot de passe et reçoit un jeton en retour, puis l'ajoute aux demandes suivantes. Jeton stocké dans la base de données et vérifié à chaque demande.

Je suppose que mon explication des jetons d'API est incorrecte car ils semblent identiques aux sessions car je stocke les ID de session dans la base de données.

  1. Mon explication des jetons API pourrait-elle être corrigée. À quoi servent-ils? En quoi diffèrent-ils des ID de session?
  2. Quels sont les avantages des jetons API?
  3. oAuth (si nous simplifions ses utilisations) n'est-il qu'un protocole pour créer des "jetons API"?
26
paul

Je ne suis pas un expert mais je vais vous donner quelques centimes que j'ai ramassés:

1) Les jetons API sont un peu un terme général. Habituellement, un jeton d'API est un identifiant unique d'une application demandant l'accès à votre service. Votre service générerait un jeton d'API pour l'application à utiliser lors de la demande de votre service. Vous pouvez ensuite faire correspondre le jeton qu'ils fournissent à celui que vous stockez afin de vous authentifier.

Un identifiant de session peut être utilisé mais son objectif est différent du jeton d'API. L'identifiant de session n'est pas une forme d'authentification mais plutôt le résultat d'une autorisation. En règle générale, une session est établie une fois qu'un utilisateur a été autorisé à utiliser une ressource (comme votre service). Par conséquent, un identifiant de session est créé lorsqu'un utilisateur se voit accorder l'accès à une ressource. Un jeton d'API est une forme d'authentification similaire à un nom d'utilisateur/mot de passe.

2) Les jetons d'API remplacent l'envoi d'une combinaison nom d'utilisateur/mot de passe via HTTP qui n'est pas sécurisée. Cependant, le problème existe toujours que quelqu'un pourrait prendre et utiliser le jeton d'API à la place.

3) D'une certaine manière oui. C'est une méthode pour garder les jetons d'API "frais". Au lieu de passer autour du même jeton d'API, vous demandez un jeton d'accès lorsque vous souhaitez utiliser un service. Les étapes OAuth 2.0 sont les suivantes:
A) Demande envoyée au service avec des informations d'identification d'une sorte
B) Une réponse réussie renvoie un code
C) Une autre demande de service est faite avec le code
D) Une réponse réussie renvoie le jeton d'accès pour la signature de chaque demande d'API à partir de ce moment jusqu'à la fin.

Beaucoup de grands fournisseurs de services utilisent pour l'instant OAuth 2.0. Ce n'est pas une solution parfaite mais c'est probablement la méthode de sécurité API la plus sécurisée et la plus répandue utilisée à l'heure actuelle.

24
David Normington