En quoi consiste exactement OAuth (Open Authorization)?

202

En quoi consiste exactement OAuth (Open Authorization)?

J'ai glané quelques informations

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

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

bryanjclark
la source

Réponses:

327

En quoi consiste exactement OAuth (Open Authorization)?

OAuth permet de notifier à un fournisseur de ressources (par exemple Facebook) que le propriétaire de la ressource (par exemple vous) autorise un tiers (par exemple une application Facebook) à accéder à ses informations (par exemple la liste de vos amis).

Si vous le lisez clairement, je comprendrais votre confusion. Alors allons-y avec 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 sujet aux erreurs. Vous pourriez en avoir marre à mi-chemin ou insérer des fautes de frappe dans leur adresse e-mail pour l'invitation. Vous pourriez donc être tenté de ne pas créer de compte après tout.

Face à cette situation, LinkedIn a la bonne idée (TM) d'écrire un programme qui ajoute automatiquement votre liste d'amis, car les ordinateurs sont beaucoup plus efficaces et efficaces pour les tâches fastidieuses et sujettes aux erreurs. Étant donné 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 pour échanger cette liste de contacts, vous devrez donner à LinkedIn le nom d'utilisateur et le mot de passe à votre compte GMail, leur donnant ainsi trop de pouvoir .

C'est là qu'intervient OAuth. 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:

  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é d'accès: vous pouvez décider de n'accorder l'accès qu'à vos coordonnées (nom d'utilisateur, e-mail, date de naissance, etc.) ou à toute votre liste d'amis, calendrier et autres.
  3. Il vous permet de gérer l'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 eux ayant accès à vos informations. Avec OAuth, il est possible de révoquer l'accès à tout moment.

Deviendra-t-elle de facto (standard?) Dans un avenir proche?

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

En pratique, il correspond très bien au modèle de réseau social. Il est particulièrement populaire pour les réseaux sociaux qui souhaitent autoriser les "plugins" tiers. Il s'agit d'un domaine où l'accès aux ressources est intrinsèquement nécessaire et également intrinsèquement peu fiable (c'est-à-dire que vous avez peu ou pas de contrôle de qualité sur ces applications).

Je n'ai pas vu tant d'autres utilisations à l'état sauvage. Je veux dire, je ne connais pas de cabinet de conseil financier en ligne qui accèdera automatiquement à vos relevés bancaires, bien qu'il puisse techniquement être utilisé de cette façon.

André Caron
la source
6
Vous l'avez rendu facile à comprendre. J'ai peut-être changé la première ligne en quelque chose comme ça à la place. "OAuth permet de notifier à un fournisseur de ressources (par exemple Gmail) que le propriétaire de la ressource (par exemple, vous un utilisateur de Gmail) accorde à un tiers (par exemple votre compte LinkedIn) l'accès à ses informations (par exemple, votre liste de contacts)." Ce que vous avez écrit, c'est-à-dire que le fournisseur et le tiers «Facebook» sont confus. Bien qu'il présente un scénario intéressant, Oauth peut également être utilisé en interne, entre différents projets de votre entreprise. Droite? Est-ce pour cela que vous avez introduit une intro compliquée?
Honey
Selon ma compréhension, le but d'OAuth est d'accorder une autorisation limitée dans le temps à une application tierce au nom du propriétaire de la ressource sans partager les informations d'identification. Je suis curieux de savoir si j'ai besoin d'OAuth pour consommer des API hébergées sur mon serveur d'applications à partir d'une application mobile (aucun tiers impliqué)?
Monish Kamble
Quand une partie de confiance m'autorise, cela ne signifie-t-il pas qu'il s'agit également d'un mécanisme d'authentification?
variable
245

Qu'est-ce que oAuth?

OAuth est simplement un protocole d'autorisation sécurisé qui traite de l'autorisation d'une application tierce d'accéder aux données de l'utilisateur sans exposer 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: le fournisseur oAuth, le client oAuth et le propriétaire.

  • Client oAuth (application qui souhaite accéder à vos informations d'identification)
  • oAuth Provider (par exemple, Facebook, Twitter ...)
  • Propriétaire (la personne avec un compte facebook, twitter ..)

Comment ça fonctionne?

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

  1. Cette étape est effectuée par le développeur de l'application . Au tout début, Facebook (oAuth Provider) n'a aucune idée du stackoverflow (oAuth Client) car il n'y a aucun lien entre eux. La toute première étape consiste donc à enregistrer stackoverflow sur le site des développeurs Facebook . Cela se fait manuellement où 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'identifiant client, le secret client, etc. de Facebook et est opérationnel avec OAUTH . entrez la description de l'image ici

    2. Maintenant, lorsque l'utilisateur de stackoverflow clique sur la connexion avec le bouton fb . Stackoverflow demande Facebook avec ClientId (fb l'utilise pour reconnaître le client) et redirectUrl (fb reviendra à cette URL après le succès). Ainsi, l'utilisateur est redirigé vers la page de connexion Facebook. C'est la meilleure partie que l' utilisateur (propriétaire) ne donne pas ses informations d'identification Facebook à stackoverflow.

entrez la description de l'image ici

entrez la description de l'image ici

  1. Une fois que le propriétaire a autorisé Stackoverflow à accéder aux informations . Ensuite, Facebook redirige vers stackoverflow, avec le code d' authentification à l'aide de la redirectUrl fournie à l'étape 2.
  2. Ensuite, Stackoverflow contacte Facebook avec le code d' authentification obtenu pour s'assurer que tout va bien.
  3. Ce n'est qu'alors que Facebook donnera un jeton d'accès à stackoverflow. Ensuite, le jeton d'accès est utilisé par stackoverflow pour récupérer les informations du propriétaire sans utiliser de mot de passe. C'est tout le motif d'oAuth, où les informations d'identification authentiques ne sont jamais exposées à des applications tierces.

Pour plus:

Vidéo rapide

lien Web

Balman Rawat
la source
sûr localhost est également une URL et pourquoi ne pas expirer et publier le résultat ici.
Balman Rawat
2
oui Vous pouvez utiliser l'adresse IP comme URL de redirection: redirect_uri = ' 127.0.0.1:4200 ' et le nom de domaine OAuth devrait être 127.0.0.1
Samson Maben
Mais l'e-mail doit-il être le même sur le client oAuth et le fournisseur oAuth pour que cela fonctionne?
Rowayda Khayri
belle explication
JayD
OAuth 2 est un protocole de sécurité, pas un protocole d'autorisation. La réponse commence à la mauvaise note.
Rajat
13

Autrement dit, OAuth est un moyen pour les applications d'obtenir des informations d'identification sur vos informations sans obtenir directement vos informations de connexion utilisateur sur un site Web. Par exemple, si vous écrivez une application sur votre propre site Web et souhaitez qu'elle utilise 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 l'API Facebook pour obtenir leur utiliser les données jusqu'à l'expiration du jeton. Les sites Web en dépendent car il permet aux programmeurs d'accéder à leurs données sans que l'utilisateur n'ait à divulguer directement leurs informations et à diffuser leurs informations d'identification en ligne, tout en offrant un niveau de protection aux données. Deviendra-t-elle la méthode d'autorisation de facto? Peut-être, il a gagné beaucoup de soutien récemment de Twitter, Facebook,

ameer
la source
14
OAuth n'est pas un processus d'authentification, mais plutôt un processus d'autorisation.
André Caron
Je n'implique pas que l'application a besoin d'une authentification directe, mais l'utilisateur s'authentifie auprès du fournisseur de services pour autoriser un tiers à accéder aux données utilisateur, je pense ...
ameer
J'ai ajouté la précision car OpenID est spécifiquement destiné à l'authentification déléguée (réutilisation d'un compte externe existant) dans l'espoir que les gens cessent de partager leurs informations d'identification de partage. OAuth vise spécifiquement l'autorisation (réutilisation des ressources) dans l'espoir de faciliter l'échange d'informations.
André Caron
9

Oauth prend définitivement de l'ampleur et devient également populaire parmi les API d'entreprise. Dans le monde des applications et des données, les entreprises exposent de plus en plus les API au monde extérieur conformément à Google, Facebook, 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 du service fourni par le - disent les utilisateurs enregistrés / invités d'Amazon

Maintenant, cela développe une situation liée à la sécurité - (je répertorie quelques-unes de ces complexités) 1) Vous, en tant qu'utilisateur final, souhaitez autoriser le développeur à accéder aux API en votre nom. 2) Le fournisseur d'API doit authentifier le développeur et l'utilisateur final 3) L'utilisateur final devrait pouvoir accorder et révoquer les autorisations pour le consentement qu'il a donné 4) Le développeur peut avoir un niveau de confiance variable avec le fournisseur d'API, en dont le niveau d'autorisations qui lui est accordé est différent

Oauth est un cadre d'autorisation qui essaie de résoudre le problème mentionné ci-dessus d'une manière standard. Avec la proéminence des API et des applications, ce problème deviendra de plus en plus pertinent et toute norme qui tentera de le résoudre - que ce soit ou n'importe quel autre - sera quelque chose dont il faudra se soucier en tant que fournisseur / développeur d'API et même utilisateur final!

hasard
la source
9

OAuth ( O pen Auth orization) est une norme ouverte pour le protocole d'octroi / de suppression d'accès. Il était utilisé comme moyen pour les utilisateurs d'Internet d'accorder aux sites Web ou aux applications l'accès à leurs informations sur d'autres sites Web, mais sans leur donner les mots de passe. Il ne traite pas de l' authentification .

Ou

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

  • Analogie 1: De nombreuses voitures de luxe sont livrées avec une clé de voiturier. C'est une clé spéciale que vous donnez au préposé au stationnement et contrairement à votre clé habituelle, elle ne permettra pas à la voiture de parcourir plus d'un mile ou deux. Certaines clés de voiturier n'ouvriront pas le coffre, tandis que d'autres bloqueront l'accès à votre carnet d'adresses de téléphone portable à bord. Quelles que soient les restrictions imposées par la clé de voiturier, 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 voulons remplir un formulaire de demande de compte bancaire. Ici, Oauth fonctionne car, au lieu de remplir le formulaire par le demandeur, la banque peut remplir le formulaire en utilisant Adhaar ou un passeport.

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

    1. Demandeur, c'est-à-dire propriétaire
    2. Le compte bancaire est le client OAuth, ils ont besoin d'informations
    3. L'ID Adhaar / Passport est le fournisseur OAuth
Premraj
la source
7

OAuth consiste à déléguer l'autorisation (choisir quelqu'un qui peut faire l'autorisation pour vous). 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 d'ID), le protocole OpenID peut être utilisé par-dessus OAuth.

Toutes les grandes entreprises comme Facebook, Google, Github, ... utilisent aujourd'hui ce type d'authentification / autorisation. Par exemple, je viens de me connecter sur ce site en utilisant mon compte Google, cela signifie que Stackoverflow ne connaît pas mon mot de passe, il reçoit l'allocation de Google où mon mot de passe (haché évidemment) est enregistré. Cela donne beaucoup d'avantages, l'un d'eux est; Dans un avenir proche, vous n'aurez 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 Web. Vous n'aurez donc qu'à vous souvenir d'un seul mot de passe.

Ozkan
la source
2

OAuth est arrivé lorsque nous ouvrons un compte SO avec le bouton Facebook / Google.

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

Source: fournisseurs de services OAuth1

John Joe
la source
Bonjour, j'ai besoin de travailler avec l'API REST alors installez oAuth, en fait j'utilise Magento, Dans localhost, j'ai installé oAuth, dans le serveur en direct comment puis-je installer, j'utilise le serveur GoDaddy VPS, une aide? @john joe
Gem
@Rathinam salut, je voudrais aider, mais c'est hors de mon expertise. Désolé.
John Joe
Est-il possible d'utiliser l'API REST sans oAuth? @John Joe
Gem
@Rathinam oui, cela dépend de vous
John Joe
1

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 ou Twitter sans exposer leur mot de passe.

Yuvraj Singh Shekhawat
la source
2
Je pense que vous vous êtes trompé OAuth et OpenID
A23149577
0

OAuth est un protocole utilisé par le propriétaire de la ressource (facebook, google, tweeter, microsoft live et ainsi de suite) pour fournir les informations nécessaires ou pour fournir une autorisation de réussite d'écriture sur un système tiers (votre site par exemple). Très probablement sans protocole OAuth, les informations d'identification devraient être disponibles pour les systèmes tiers, ce qui constituerait un moyen de communication inapproprié entre ces systèmes.

Радослав Тодоров
la source