web-dev-qa-db-fra.com

Qu'est-ce que OAuth et comment sécurise-t-il REST appels API?

J'ai une application mobile REST Appels API qui frappe sur mon serveur sans aucun jeton ou mécanisme de sécurité.

Je veux sécuriser mes appels API. J'essaie de comprendre ce qui est OAuth et comment il sécurisera mon application mobile REST Appels API qui frappent mon serveur?

Je veux également connaître en détail les champs ci-dessous qui sont utilisés dans OAuth. D'où je vais obtenir les champs ci-dessous.

Consumer Key
Consumer Secret
Token
Token Secret
Timestamp
Nonce
11
Sanjay Salunkhe

Étant donné que la plupart des fournisseurs utilisent OAuth 2.0 et OAuth 1.0 a été déconseillé par les principaux fournisseurs, je vais expliquer OAuth2.0

Qu'est-ce que OAuth?

OAuth est une norme d'autorisation ouverte, couramment utilisée comme moyen pour les utilisateurs Internet de se connecter à des sites Web tiers à l'aide de leurs comptes Microsoft, Google, Facebook, Twitter, One Network, etc. sans exposer leur mot de passe.

vous pouvez implémenter votre propre serveur OAuth, ici j'explique l'auth. sociale, donc le terme OAuth ici fait référence à l'auth social avec OAuth).

En termes simples, OAuth permet aux utilisateurs de se connecter à votre service Web avec des comptes (Facebook, Google, etc.).

Terminologie:

  • client : l'utilisateur de votre API.
  • Propriétaire de la ressource (serveur api): Votre API
  • Serveur d'autorisation (serveur d'authentification): Serveur d'authentification Facebook/Google, etc.
  • Octroi d'autorisation: la méthode par laquelle vous autorisez un utilisateur. nous utilisons ici le code d'autorisation.
  • Code d'autorisation: Code que le serveur d'authentification renvoie au client qui peut être échangé contre un jeton d'accès sur le serveur api.
  • Jeton d'accès: Une chaîne qui identifie un utilisateur, vient généralement avec une période d'expiration.
  • Clé de consommateur ou APP_ID: une clé publique utilisée par le serveur d'authentification pour identifier votre application.
  • Consumer Secret ou APP_SECRET: une clé privée qui doit rester confidentielle.

les termes ci-dessous n'ont rien à voir avec OAuth mais sont utilisés avec OAuth pour le rendre plus sécurisé).

  • Horodatage: une chaîne qui indique la date et l'heure.
  • Nonce: un nombre ou une chaîne qui ne peut être utilisé qu'une seule fois.

enter image description here
source: http://smerity.com/

Je vais expliquer le diagramme avec la connexion Facebook comme exemple.

contexte. considérez que vous avez fait ce qui suit, avant d'expliquer le diagramme.

  1. Vous enregistrez une application sur le portail des développeurs Facebook.
  2. Facebook vous fournit deux codes, 1) un secret_key et 2) un app_id
  3. Vous avez conçu un bouton indiquant Login with Facebook.

maintenant le diagramme.

  1. Le client demande le serveur API.
  2. Le serveur API redirige vers la page de connexion en disant. To access the data: please login with facebook to access the page
  3. L'utilisateur clique sur login with Facbook bouton, une nouvelle fenêtre contextuelle OAuth dialog s'ouvre. demander le nom d'utilisateur et le mot de passe facebook.
  4. L'utilisateur entre son nom d'utilisateur et son mot de passe, puis autorise l'accès à votre application. le serveur d'authentification redirige l'utilisateur vers votre site Web avec un code comme paramètre dans l'URL.
  5. Le serveur API est appelé à l'étape 4 , Le serveur API capture le code de l'URL.
  6. Serveur API appel serveur d'authentification avec le client_secret
  7. Le serveur d'authentification revient à access token pour l'utilisateur vers le serveur API.
  8. Le serveur API demande au serveur d'authentification des informations utilisateur pour le access token.
  9. Auth Server renvoie des détails sur l'utilisateur, la photo de profil, l'e-mail, etc.
  10. Le serveur API identifie l'utilisateur, lui envoie la réponse avec le jeton d'accès.
  11. le client envoie le jeton d'accès au serveur api à la prochaine demande.
  12. Le serveur API vérifie si le jeton d'accès est valide et répond.
  13. Lorsque le jeton d'accès a expiré, le client est invité à se reconnecter.

Maintenant, Comment cela sécurise-t-il votre API?

Faites les portions qui ont besoin de sécurité comme login requis pour y accéder. si le client qui fait la demande n'est pas connecté à votre API, envoyez-le à l'étape 2 du diagramme.

Alors qu'est-ce que le nonce? horodatage?

Si quelqu'un vole un jeton d'accès, il peut accéder au serveur API tant que le jeton d'accès expire. Ainsi, lorsque l'utilisateur demande une page, le serveur lui renvoie un nonce qui est stocké dans le serveur. le client signe la demande avec le nonce reçu et complète la demande. comme le nonce n'est utilisé qu'une seule fois, le serveur supprime le nonce. lorsqu'un attaquant saisit le nonce et fait une fausse demande au serveur, le serveur rejette la demande car le numéro unique n'est pas valide car il est déjà utilisé.

TimeStamp est utilisé pour identifier l'heure de création du jeton ou du nonce qui est utilisée pour expirer le jeton ou le nonce dans un délai limité (1 à 2 secondes), le temps nécessaire pour qu'une demande se termine.

25