589 votes

Sur un haut niveau, comment ne OAuth 2 travail?

Si je comprends bien, le suivant de la chaîne d'événements se produit dans OAuth 2 pour Site Un accès de X de l'Utilisateur informations sur le Site B.

  1. Site des registres avec le Site B, et obtient un Secret et un ID.
  2. Lorsque l'Utilisateur X a dit Site Un pour l'accès au Site B, l'Utilisateur X est envoyé vers le Site B, où il raconte le Site B qu'il serait, en effet, comme pour donner le Site d'Une des autorisations pour des informations spécifiques.
  3. Le Site B redirige l'Utilisateur X vers Un Site, avec un Code d'Autorisation.
  4. Site Une passe alors que le Code d'Autorisation avec son Secret retour au Site B en échange d'un Jeton de Sécurité.
  5. Le Site A ensuite fait des demandes sur le Site B pour le compte de l'Utilisateur X par regroupement le Jeton de Sécurité ainsi que des demandes.

La façon dont tout cela fonctionne en termes de sécurité et de cryptage, sur un haut-niveau? Comment OAuth 2 protéger contre des choses comme les attaques de relecture en utilisant le Jeton de Sécurité?

139voto

William Jones Points 3854

Basé sur ce que j'ai lu, c'est comment tout cela fonctionne:

Le flux général de la question est correcte. Dans l'étape 2, l'Utilisateur X est authentifié, et est également autoriser Un Site d'accès de l'Utilisateur X de l'information sur le Site B. À l'étape 4, le site passe son Secret retour au Site B, l'authentification elle-même, ainsi que le Code d'Autorisation, en indiquant ce qu'il est demandé pour l'utilisateur (Utilisateur X jeton d'accès).

Dans l'ensemble, OAuth 2 est en fait très simple modèle de sécurité et de cryptage ne vient jamais directement en jeu. Au lieu de cela, à la fois le Secret et le Jeton de Sécurité sont essentiellement des mots de passe, et le tout est garantie que par la sécurité de la connexion https.

OAuth 2 n'a pas de protection contre le rejeu de l'émission de Jeton de Sécurité ou le Secret. Au lieu de cela, il s'appuie entièrement sur le Site B, d'être responsables de ces éléments et ne pas les laisser sortir, et sur eux d'être envoyés sur https pendant le transport (https permettra de protéger les paramètres d'URL).

Le but du Code d'Autorisation étape est simplement de commodité, et le Code d'Autorisation n'est pas particulièrement sensible sur son propre. Il fournit un identifiant commun pour l'Utilisateur X jeton d'accès pour Un Site en demandant le Site B pour l'Utilisateur X jeton d'accès. Juste de X de l'Utilisateur id utilisateur sur le Site B n'aurait pas fonctionné, car il pourrait y avoir beaucoup de circulation des jetons d'accès en attente d'être remis aux différents sites en même temps.

111voto

Owen Tsao Points 1262

OAuth est un protocole avec lequel un 3-party application peut accéder à vos données stockées dans un autre site web sans votre compte et mot de passe. Pour plus de définition officielle, vous pouvez consulter le Wiki ou le cahier des charges.

Voici un cas d'utilisation de la démo:

  1. Je me suis connecté en LinedIn et voulez le connecter à des amis qui sont en mai Gmail contact. Et heureusement LinkedIn prend en charge ce, alors j'ai cliqué sur ce bouton:
    Add Connection

  2. Une page web pop-up, et il montre le Gmail page de connexion, lorsque vous entrez dans votre compte et mot de passe.
    Add Connection

  3. Une page de consentement montre et j'ai cliqué Add Connection

  4. Maintenant, LinkedIn peut accéder à mes contacts dans Gmail: Add Connection

Ci-dessous est l'organigramme de la procédure ci-dessus.

Add Connection

Étape 1: LinkedIn demande un jeton pour le Serveur d'Autorisation.

Étape 2: L'autorisation serveur authentifie le propriétaire de la ressource et de montrer à l'utilisateur la page de consentement. (Si l'utilisateur n'est pas connecté à Google, il/elle a besoin de vous connecter d'abord)

Étape 3: l'Utilisateur accorde à l'LinkedIn la demande d'accès.

Étape 4: l'autorisation de serveur répond avec un jeton d'accès.

Étape 5: LinkedIn appel Gmail API avec ce jeton d'accès.

Étape 6: Gmail serveur de ressources renvoie à vos contacts si le jeton d'accès est valide. (Le jeton sera vérifié par le serveur de ressources)

Vous pouvez obtenir plus d' ici.

9voto

Will Points 994

L'autre réponse est très détaillée des adresses à la majorité des questions soulevées par les OP.

D'élaborer, et plus précisément à l'adresse de l'OP de la question "Comment OAuth 2 protéger contre des choses comme les attaques de relecture en utilisant le Jeton de Sécurité?", il y a deux protections supplémentaires dans les recommandations officielles pour la mise en œuvre de l'authentification OAuth 2:

1) les Jetons ont généralement une courte période d'expiration (http://tools.ietf.org/html/rfc6819#section-5.1.5.3):

Un court temps d'expiration pour les jetons est un moyen de protection contre les menaces suivantes:

  • replay...

2) Lorsque le jeton est utilisé par le Site, la recommandation est qu'il sera présenté non pas comme des paramètres d'URL mais dans la demande d'Autorisation de champ d'en-tête (http://tools.ietf.org/html/rfc6750):

Les Clients DEVRAIENT faire les requêtes authentifiées avec un porteur du jeton à l'aide de le formulaire "Autorisation" demande de champ d'en-tête avec le "Porteur" HTTP régime d'autorisation. ...

"Application/x-www-form-urlencoded" méthode ne DOIT PAS être utilisé sauf application des contextes où les participants navigateurs ne font pas avoir accès à de l'Autorisation de demande de champ d'en-tête. ...

URI de la Requête de Paramètre... est inclus à document en cours d'utilisation; son utilisation n'est pas recommandé, en raison de ses lacunes en matière de sécurité

2voto

atul Points 27

Vous pouvez aussi vous référer à la documentation officielle de l'authentification oAuth http://tools.ietf.org/html/rfc6749

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