web-dev-qa-db-fra.com

En quoi consiste exactement OAuth (Open Authorization)?

En quoi consiste exactement OAuth (Open Authorization)?

J'ai glané des informations de 

Mais je veux apprendre et en savoir plus. Je cherche des informations sur le cycle de vie. Pourquoi la plupart des réseaux sociaux s'appuient sur ce protocole ouvert?

Deviendra-t-il de facto dans un proche avenir avec les différentes technologies (par exemple, ASP.NET)? 

172
user372724

En quoi consiste exactement OAuth (autorisation ouverte)?

OAuth permet de notifier un fournisseur de ressources (par exemple Facebook) que le propriétaire de la ressource (par exemple, vous accordez la permission à un tiers (par exemple un compte Facebook Application) accéder à leur information (par exemple la liste de vos amis).

Si vous le lisiez clairement, je comprendrais votre confusion. Alors prenons un exemple concret: rejoindre un autre réseau social!

Supposons que vous ayez un compte GMail existant. Vous décidez de rejoindre LinkedIn. Ajouter tous vos nombreux amis manuellement est fastidieux et source d’erreurs. Vous pourriez en avoir marre à mi-chemin ou insérer des fautes de frappe dans leur adresse e-mail d'invitation. Donc, vous pourriez être tenté de ne pas créer un compte après tout.

Face à cette situation, LinkedIn a la bonne idée d’écrire un programme qui ajoute automatiquement votre liste d’amis car les ordinateurs sont bien plus efficaces et performants pour les tâches fastidieuses et sujettes aux erreurs. Depuis que rejoindre le réseau est maintenant si facile, il n'y a aucun moyen de refuser une telle offre, n'est-ce pas?

Sans une API permettant d'échanger cette liste de contacts, vous devez attribuer à LinkedIn le nom d'utilisateur et le mot de passe de votre compte GMail, et ainsi en leur donnant trop de pouvoir.

C’est là que OAuth entre. Si votre GMail prend en charge le protocole OAuth, alors LinkedIn peut vous demander de les autoriser à accéder à votre liste de contacts GMail.

OAuth permet de:

  1. Différents niveaux d'accès: lecture seule VS lecture-écriture. Cela vous permet d'accorder l'accès à votre liste d'utilisateurs ou un accès bidirectionnel pour synchroniser automatiquement vos nouveaux amis LinkedIn avec vos contacts GMail.
  2. Granularité des accès: vous pouvez décider de n'accorder que l'accès à vos informations de contact (nom d'utilisateur, e-mail, date de naissance, etc.) ou à votre liste complète d'amis, votre calendrier, etc.
  3. Il vous permet de gérer les accès à partir de l'application du fournisseur de ressources. Si l'application tierce ne fournit pas de mécanisme pour annuler l'accès, vous seriez coincé avec le fait qu'ils aient accès à vos informations. Avec OAuth, il est possible de révoquer l'accès à tout moment.

Deviendra-t-il de facto (standard?) Dans un futur proche?

Bien que OAuth soit un pas en avant important, il ne résout pas les problèmes si les gens ne l'utilisent pas correctement. Par exemple, si un fournisseur de ressources n'accorde qu'un seul niveau d'accès en lecture-écriture à toutes vos ressources à la fois et ne fournit pas de mécanisme de gestion des accès, il ne sert à rien. En d'autres termes, OAuth est un cadre permettant de fournir une fonctionnalité d'autorisation et pas seulement une authentification.

En pratique, cela correspond très bien au modèle de réseau social. Il est particulièrement populaire pour les réseaux sociaux qui souhaitent autoriser des "plugins" tiers. C’est un domaine dans lequel l’accès aux ressources est intrinsèquement nécessaire et peu fiable en soi (c’est-à-dire que vous n’avez que peu ou pas de contrôle de la qualité de ces applications).

Je n'ai pas vu tant d'autres utilisations dans la nature. Je veux dire, je ne connais pas de société de conseil financier en ligne qui accédera automatiquement à vos relevés bancaires, bien que techniquement elle puisse être utilisée de cette manière.

316
André Caron

Qu'est-ce que oAuth?

OAuth est simplement un protocole d'autorisation sécurisé traitant de l'autorisation donnée à une application tierce d'accéder aux données de l'utilisateur sans dévoiler son mot de passe. par exemple. (Connectez-vous avec fb, gPlus, Twitter dans de nombreux sites Web ..) fonctionnent tous sous ce protocole.

Les parties impliquées 

Le protocole devient plus facile lorsque vous connaissez les parties impliquées. Fondamentalement, trois parties sont impliquées: oAuth Provider, oAuth Client and Owner.

  • oAuth Client (Application qui souhaite accéder à vos informations d'identification)
  • o Fournisseur d'Auth (par exemple, Facebook, Twitter ...)
  • Propriétaire (la personne avec Facebook, Twitter .. compte)

Comment ça marche?

J'ai supposé un scénario où un site Web (stackoverflow) doit ajouter une connexion avec la fonctionnalité facebook. Ainsi, facebook est oAuth Provider et le stackoverflow est oAuth Client.

  1. Cette étape est réalisée par le développeur de l'application. Au tout début, facebook (fournisseur oAuth) n'a aucune idée du stackoverflow (client oAuth) car il n'y a pas de lien entre eux. La première étape consiste donc à enregistrer stackoverflow auprès de facebook site de développeurs . Ceci est fait manuellement lorsque les développeurs doivent donner les informations de l'application à Facebook comme le nom de l'application, le site Web, le logo, l'URL de redirection (important). Ensuite, stackoverflow est enregistré avec succès, a obtenu l’ID client, le secret client, etc. de facebook et est opérationnel avec OAUTH .  enter image description here

    2 .Maintenant, lorsque l'utilisateur de stackoverflow clique sur le bouton de connexion avec le bouton fb. Stackoverflow demande à facebook avec ClientId (le fb l’utilise pour reconnaître le client) et redirectUrl (le fb reviendra à cette adresse après le succès). Ainsi, l’utilisateur sera redirigé vers la page de connexion de Facebook. Ceci est la meilleure partie utilisateur (propriétaire) ne donne pas leur identifiant Facebook à stackoverflow.

 enter image description here

 enter image description here

  1. After Owner permet à Stackoverflow d'accéder aux informations. Ensuite, Facebook redirige vers stackoverflow, avec authcode à l'aide de redirectUrl fourni à l'étape 2. 
  2. Ensuite, Stackoverflow entre en contact avec Facebook avec le authcode obtenu pour s’assurer que tout va bien. 
  3. Alors seulement, facebook donnera access token à stackoverflow. Ensuite, access token est utilisé par stackoverflow pour récupérer les informations du propriétaire sans utiliser de mot de passe. C’est l’objet même de oAuth, où les créanciers ne sont jamais exposés à des applications tierces.

Pour plus:

Vidéo rapide

Lien Web

217
Balman Rawat

En un mot, OAuth permet aux applications d'obtenir des informations d'identification pour vos informations sans que vos informations de connexion d'utilisateur ne soient directement transmises à un site Web. Par exemple, si vous écrivez une application sur votre propre site Web et souhaitez utiliser les données du compte facebook d'un utilisateur, vous pouvez utiliser OAuth pour obtenir un jeton via une URL de rappel, puis utiliser ce jeton pour appeler la API facebook afin d'obtenir son adresse. utiliser les données jusqu'à l'expiration du jeton. Les sites Web en dépendent, car cela permet aux programmeurs d'accéder à leurs données sans que l'utilisateur soit obligé de divulguer directement leurs informations et de diffuser leurs informations d'identification en ligne, tout en assurant un niveau de protection des données. Deviendra-t-il la méthode d'autorisation de facto? Peut-être a-t-il gagné beaucoup de soutien récemment de Twitter, Facebook et les goûts des autres programmeurs qui souhaitent créer des applications autour des données utilisateur.

12
ameer

Oauth prend définitivement de l'ampleur et est de plus en plus populaire parmi les API d'entreprise .____ Dans le monde axé sur les applications et les données, les entreprises exposent de plus en plus les API au monde extérieur, conformément à Google, Facebook et Twitter. Avec ce développement, un triangle d’authentification à 3 voies se forme 

1) Fournisseur d'API - Toute entreprise qui expose ses actifs par API, par exemple Amazon, Target, etc 2) Développeur - Celui qui crée des applications mobiles/autres sur ces API 3) L'utilisateur final - L'utilisateur final de le service fourni par le - disons utilisateurs enregistrés/invités d'Amazon

Nous développons à présent une situation liée à la sécurité - (je ne liste que quelques-unes de ces complexités) 1) En tant qu’utilisateur final, vous souhaitez autoriser le développeur à accéder aux API pour votre compte. 2) Le fournisseur d’API doit authentifier le développeur et l’utilisateur final 3) L’utilisateur final doit pouvoir octroyer et révoquer les autorisations pour le consentement qu’il a donné 4) Le développeur peut disposer de niveau de confiance avec le fournisseur d'API, dans lequel le niveau d'autorisations qui lui est donné est différent

Oauth est un cadre d'autorisation qui essaie de résoudre le problème mentionné ci-dessus de manière standard. Avec l'importance des API et des applications, ce problème deviendra de plus en plus pertinent et tout standard essayant de le résoudre - qu'il s'agisse de tout ou partie de la liste - sera une chose à prendre en compte en tant que fournisseur/développeur d'API et même utilisateur final!

9
randomness

OAuth (O pen Auth orization) est un standard ouvert pour le protocole d'octroi/délocation d'accès. Il permettait aux utilisateurs d’Internet d’accorder aux sites Web ou aux applications l’accès à leurs informations sur d’autres sites Web, mais sans leur fournir de mot de passe. Il ne traite pas de authentication.

Ou 

OAuth 2.0 est un protocole qui permet à un utilisateur d'accorder un accès limité à ses ressources sur un site, vers un autre site, sans avoir à révéler ses informations d'identification. 

  • Analogie 1: De nombreuses voitures de luxe sont aujourd'hui livrées avec une clé de voiturier. C’est une clé spéciale que vous donnez au préposé au stationnement et, contrairement à la clé habituelle, ne permet pas à la voiture de conduire plus d’un kilomètre ou deux. Certaines clés de valet n'ouvrent pas le coffre, tandis que d'autres bloquent l'accès à votre carnet d'adresses de téléphone portable intégré. Quelles que soient les restrictions imposées par la clé de service, l'idée est très intelligente. Vous donnez à quelqu'un un accès limité à votre voiture avec une clé spéciale, tout en utilisant votre clé habituelle pour tout déverrouiller. src de auth0

  • Analogie 2: Supposons que nous voulions remplir un formulaire de demande pour un compte bancaire. Ici, Oauth travaille comme, au lieu de remplir le formulaire par demandeur, la banque peut remplir le formulaire en utilisant Adhaar ou un passeport. 

    Ici, les trois entités suivantes sont impliquées: 

    1. Demandeur i.e. Propriétaire 
    2. Compte bancaire: client OAuth, ils ont besoin d'informations
    3. Adhaar/Passport ID est fournisseur OAuth 
7
Premraj

OAuth est arrivé lorsque nous avons ouvert un compte SO avec Facebook/Google bouton.

  1. Application (SO) redirigeant l'utilisateur vers l'URL d'autorisation du fournisseur. (Affichage d'une page Web demandant à l'utilisateur s'il souhaite accorder à l'application l'accès pour lire et mettre à jour ses données).
  2. L'utilisateur accepte d'accorder le processus de candidature. 
  3. Le fournisseur de services redirige l'utilisateur vers l'application (SO), en transmettant le code d'autorisation en tant que paramètre.
  4. SO échange le code pour une autorisation d'accès. 

Source: Fournisseurs de services OAuth1

2
John Joe

OAuth consiste à déléguer une autorisation (choisir quelqu'un qui peut faire l'autorisation à votre place). Notez que l'authentification et l'autorisation sont des choses différentes. OAuth est une autorisation (contrôle d'accès), et si vous souhaitez également implémenter l'authentification (vérification des identifiants), le protocole OpenID peut être utilisé par-dessus OAuth.

Toutes les grandes entreprises comme Facebook, Google, Github, ... utilisent ce type d'authentification/autorisation de nos jours. Par exemple, je viens de me connecter à ce site Web en utilisant mon compte Google, cela signifie que Stackoverflow ne connaît pas mon mot de passe, il reçoit l'indemnité de Google où mon mot de passe (haché évidemment) est enregistré. Cela donne beaucoup d'avantages, l'un d'entre eux est; Dans un proche avenir, vous ne devrez pas créer plusieurs comptes sur chaque site Web. Un site Web (auquel vous faites le plus confiance) peut être utilisé pour vous connecter à tous les autres sites. Il ne vous reste donc plus qu’à mémoriser un mot de passe.

1
Ozkan

OAuth est un standard ouvert d'autorisation, couramment utilisé pour permettre aux utilisateurs Internet de se connecter à des sites Web tiers à l'aide de leurs comptes Microsoft, Google, Facebook ou Twitter sans révéler leur mot de passe.

1

OAuth est un protocole utilisé par Resource Owner (Facebook, Google, Tweeter, Microsoft Live, etc.) pour fournir les informations nécessaires ou pour fournir une autorisation de réussite en écriture sur un système tiers (votre site par exemple). Très probablement, sans OAuth protocole, les informations d'identification devraient être disponibles pour les systèmes tiers, ce qui constituerait un moyen de communication inapproprié entre ces systèmes.