Question Quelle est la différence entre OpenID et OAuth?


J'essaie vraiment de comprendre la différence entre OpenID et OAuth? Peut-être qu'ils sont deux choses totalement séparées?


813
2017-07-06 13:40


origine


Réponses:


OpenID concerne l'authentification (c'est-à-dire prouver qui vous êtes), OAuth concerne l'autorisation (c'est-à-dire accorder l'accès à la fonctionnalité / données / etc .. sans avoir à traiter avec l'authentification d'origine).

OAuth peut être utilisé sur des sites partenaires externes pour permettre l'accès à des données protégées sans avoir à ré-authentifier un utilisateur.

L'article de blog "OpenID versus OAuth du point de vue de l'utilisateur"a une simple comparaison des deux du point de vue de l'utilisateur et"OAuth-OpenID: Vous aboyer le mauvais arbre si vous pensez qu'ils sont la même chose"a plus d'informations à ce sujet.


702
2017-07-06 13:47



Il existe trois façons de comparer OAuth et OpenID:

1. Objectifs

OpenID a été créé pour l'authentification fédérée, c'est-à-dire qu'il permet à un tiers d'authentifier vos utilisateurs pour vous, en utilisant les comptes qu'ils ont déjà. Le terme fédéré est critique ici parce que le point entier de OpenID est que n'importe quel fournisseur peut être utilisé (à l'exception des listes blanches). Vous n'avez pas besoin de pré-choisir ou négocier un accord avec les fournisseurs pour permettre aux utilisateurs d'utiliser un autre compte qu'ils ont.

OAuth a été créé pour supprimer le besoin pour les utilisateurs de partager leurs mots de passe avec des applications tierces. Cela a commencé comme un moyen de résoudre un problème OpenID: si vous soutenez OpenID sur votre site, vous ne pouvez pas utiliser les informations d'identification HTTP Basic (nom d'utilisateur et mot de passe) pour fournir une API car les utilisateurs n'ont pas de mot de passe sur votre site.

Le problème est avec cette séparation de OpenID pour l'authentification et OAuth pour l'autorisation est que les deux protocoles peuvent accomplir beaucoup de mêmes choses. Ils fournissent chacun un ensemble différent de fonctionnalités qui sont souhaitées par différentes implémentations mais essentiellement, ils sont assez interchangeables. À la base, les deux protocoles sont une méthode de vérification des assertions (OpenID est limité à l'affirmation 'c'est qui je suis', tandis que OAuth fournit un 'jeton d'accès' qui peut être échangé contre toute assertion supportée via une API).

2. Caractéristiques

Les deux protocoles permettent à un site de rediriger un utilisateur ailleurs et de revenir avec une assertion vérifiable. OpenID fournit une assertion d'identité tandis que OAuth est plus générique sous la forme d'un jeton d'accès qui peut ensuite être utilisé pour "poser des questions au fournisseur OAuth". Cependant, ils prennent chacun en charge différentes fonctionnalités:

OpenID - La caractéristique la plus importante d'OpenID est son processus de découverte. OpenID ne nécessite pas de codage dur chacun des fournisseurs que vous souhaitez utiliser à l'avance. En utilisant la découverte, l'utilisateur peut choisir n'importe quel fournisseur tiers qu'il veut authentifier. Cette fonctionnalité de découverte a également causé la plupart des problèmes d'OpenID parce que la façon dont elle est implémentée consiste à utiliser des URI HTTP comme identificateurs que la plupart des utilisateurs ne reçoivent pas. Autres fonctionnalités OpenID prend en charge l'enregistrement ad-hoc des clients en utilisant un échange DH, un mode immédiat pour une expérience utilisateur optimisée et un moyen de vérifier les assertions sans faire un autre aller-retour au fournisseur.

OAuth- La fonctionnalité la plus importante d'OAuth est le jeton d'accès qui fournit une méthode durable pour faire des demandes supplémentaires. Contrairement à OpenID, OAuth ne se termine pas par l'authentification mais fournit un jeton d'accès pour accéder aux ressources supplémentaires fournies par le même service tiers. Cependant, comme OAuth ne prend pas en charge la découverte, il faut présélectionner et coder en dur les fournisseurs que vous décidez d'utiliser. Un utilisateur visitant votre site ne peut utiliser aucun identifiant, seulement ceux présélectionnés par vous. De plus, OAuth n'a pas de concept d'identité, donc l'utiliser pour la connexion signifie soit ajouter un paramètre personnalisé (comme fait par Twitter) ou faire un autre appel d'API pour obtenir l'utilisateur actuellement "connecté".

3. Implémentations techniques

Les deux protocoles partagent une architecture commune en utilisant la redirection pour obtenir l'autorisation de l'utilisateur. Dans OAuth, l'utilisateur autorise l'accès à ses ressources protégées et à OpenID, à son identité. Mais c'est tout ce qu'ils partagent.

Chaque protocole a une manière différente de calculer une signature utilisée pour vérifier l'authenticité de la demande ou de la réponse, et chacun a des exigences d'enregistrement différentes.


319
2017-07-06 13:45



OpenID est (principalement) pour l'identification / authentification, de sorte que stackoverflow.com sait que je possède chris.boyle.name (ou ailleurs) et donc que je suis probablement la même personne qui possédait chris.boyle.name hier et a gagné quelques points de réputation.

OAuth est conçu pour l'autorisation de prendre des mesures en votre nom, de sorte que stackoverflow.com (ou n'importe où) peut demander la permission de, disons, tweeter en votre nom automatiquement, sans connaître votre mot de passe Twitter.


93
2018-05-19 08:37



Beaucoup de gens visitent encore ceci donc voici un diagramme très simple pour l'expliquer

OpenID_vs._pseudo-authentication_using_OAuth

Courtoisie Wikipedia


78
2017-07-06 20:15



OAuth 

Utilisé pour délégué authorization uniquement - ce qui signifie que vous autorisez un accès de service tiers à utiliser des données personnelles, sans donner de mot de passe. En outre, les "sessions" OAuth vivent généralement plus longtemps que les sessions utilisateur. Ce qui signifie qu'OAuth est conçu pour autoriser l'autorisation

C'est-à-dire que Flickr utilise OAuth pour permettre à des services tiers d'afficher et de modifier une image de personne en leur nom, sans qu'ils aient à donner leur nom d'utilisateur et leur mot de passe.

OpenID

Habitué authenticate identité de connexion unique. Tout ce que OpenID est supposé faire est de permettre à un fournisseur OpenID de prouver que vous le dites. Cependant, de nombreux sites utilisent l'authentification d'identité pour fournir une autorisation (mais les deux peuvent être séparés)

C'est-à-dire que l'on montre leur passeport à l'aéroport pour authentifier (ou prouver) le nom de la personne sur le ticket qu'ils utilisent.


39
2018-03-20 19:37



Utilisez OAuth si vos utilisateurs veulent simplement se connecter avec Facebook ou Twitter. Utilisez OpenID si vos utilisateurs sont des neckbeards qui exécutent leurs propres fournisseurs OpenID parce qu'ils "ne veulent pas que quelqu'un d'autre possède leur identité".


30
2017-08-27 23:27



OpenID et OAuth sont des protocoles basés sur HTTP pour l'authentification et / ou l'autorisation. Les deux sont destinés à permettre aux utilisateurs d'effectuer des actions sans donner d'informations d'authentification ou d'autorisations globales à des clients ou à des tiers. Bien qu'ils soient similaires et qu'il existe des normes proposées pour les utiliser tous les deux ensemble, ce sont des protocoles distincts.

OpenID est destiné à l'authentification fédérée. Un client accepte une assertion d'identité de la part de n'importe quel fournisseur (bien que les clients soient libres de la liste blanche ou des fournisseurs de listes noires).

OAuth est destiné à l'autorisation déléguée. Un client s'enregistre auprès d'un fournisseur, qui fournit des jetons d'autorisation qu'il acceptera pour effectuer des actions pour le compte de l'utilisateur.

OAuth est actuellement mieux adapté à l'autorisation, car d'autres interactions après l'authentification sont intégrées au protocole, mais les deux protocoles évoluent. OpenID et ses extensions peuvent être utilisés pour l'autorisation, et OAuth peut être utilisé pour l'authentification, ce qui peut être considéré comme une autorisation sans autorisation.


17
2018-01-12 11:18



Je crois qu'il est logique de revoir cette question, comme l'ont également souligné les commentaires, l'introduction d'OpenID Connect peut avoir apporté plus de confusion.

OpenID Connect est un protocole d'authentification tel que OpenID 1.0 / 2.0, mais il est en fait construit au-dessus de OAuth 2.0, de sorte que vous obtiendrez des fonctionnalités d'autorisation avec des fonctionnalités d'authentification. La différence entre les deux est assez bien expliquée en détail dans cet article (relativement récent, mais important): http://oauth.net/articles/authentication/


13
2017-10-06 06:41