web-dev-qa-db-fra.com

OAuth Autorisation vs Authentification

La terminologie OAuth me préoccupe depuis longtemps. L’autorisation est-elle OAuth) comme certains le suggèrent ou s’agit-il d’une authentification?

Corrigez-moi si je me trompe, mais j'ai toujours lu l'autorisation comme étant le fait d'autoriser l'accès de quelqu'un à une ressource. OAuth ne semble pas avoir d'implémentation permettant réellement l'accès aux utilisateurs.) Toutes les OAuth parlent fournissent un jeton à l’utilisateur (signé et parfois chiffré). Ce jeton est ensuite transmis à chaque appel à un point de terminaison du service principal où il est vérifié. pour la validité, pas encore une préoccupation OAuth.

L’authentification OAuth (chaque article dit que ce n’est pas le cas)) suppose un utilisateur qui doit fournir des informations d’identification qui prouvent à son tour qu’un utilisateur ne devrait pas ou n’aurait pas accès.

Il semble donc que OAuth n’est pas une autorisation NOR L’authentification doit être effectuée par d’autres processus. C’est quoi donc? C'est un processus pour Communiquer un jeton? Est-ce fluff Word qui n'a pas vraiment de sens spécifique?

Il est difficile de poser une question sur ce sujet sans paraître énigmatique et superstitieux (fantômes et gobelins). Je m'attends donc à ce que répondre à cette question ne soit pas chose simple non plus. Entrez à vos risques et périls.

70
edgarhsanchez

OAuth est une spécification pour autorisation

OAuth 2.0 est une spécification pour l'autorisation, mais PAS pour l'authentification. RFC 6749, .1. Autorisation Endpoint dit explicitement ce qui suit:

Le noeud final d'autorisation est utilisé pour interagir avec le propriétaire de la ressource et obtenir une autorisation. Le serveur d'autorisation DOIT d'abord vérifier l'identité du propriétaire de la ressource. La manière dont le serveur d'autorisation authentifie le propriétaire de la ressource (identifiant de connexion, nom d'utilisateur et mot de passe, cookies de session, par exemple) dépasse la portée de cette spécification .


Authentification OAuth?

L'authentification fournit des informations sur "qui est-ce". L'autorisation fournit des informations sur "qui accorde quelles autorisations à qui". Le flux d'autorisation contient l'authentification en premier lieu. C'est la raison pour laquelle les gens sont souvent confus.

Beaucoup de bibliothèques et de services utilisent OAuth 2.0 pour s’authentifier. Il s’appelle souvent "connexion sociale" et rend les gens plus confus. Si vous voyez "authentification OAuth" (et non "autorisation OAuth" ), c’est une solution utilisant OAuth pour l’authentification.


OpenID Connect

OpenID 1.0 et OpenID 2.0 sont d'anciennes spécifications pour l'authentification. Ceux qui ont défini les spécifications s'attendaient à ce que les utilisateurs utilisent OpenID pour l'authentification. Toutefois, certaines personnes ont commencé à utiliser OAuth 2.0 pour l’authentification (pas pour l’autorisation) et OAuth a rapidement prévalu.

Du point de vue des gars OpenID, l'authentification basée sur OAuth n'était pas suffisamment sécurisée, mais ils devaient admettre que les gens préféraient OAuth. En conséquence, OpenID les gars ont décidé de définir une nouvelle spécification, OpenID Connect, en plus de OAuth 2.0 .

Oui, cela a rendu les gens beaucoup plus confus.


Définitions en une phrase de OAuth 2.0 et OpenID Connect

OAuth 2. est un cadre dans lequel un utilisateur d'un service peut autoriser une application tierce à accéder à ses données hébergées. dans le service sans révéler ses informations d'identification (ID et mot de passe) à l'application.

enter image description here

OpenID Connect est un framework au-dessus de OAuth 2.0 où une application tierce peut obtenir les informations d'identité d'un utilisateur gérées par un service.

enter image description here

(Désolé, ces définitions sont extraites de la page aperç de mon entreprise)


Définitions du point de vue des implémenteurs

L'authentification est un processus permettant de déterminer le sujet (= identifiant unique) d'un utilisateur final. Il y a plusieurs façons de déterminer le sujet. Identifiant et mot de passe, empreintes digitales, reconnaissance de l'iris, etc.

Autorisation est un processus permettant d'associer le sujet aux autorisations demandées et à l'application cliente qui a demandé les autorisations. Un jeton d'accès représente l'association.


Voir également

  1. implémenteur Full-Scratch de OAuth et OpenID Connect parle des constatations
  2. Diagrammes et films de tous les OAuth 2.0 flux)
  3. Diagrammes de tous les flux OpenID Connect
  4. Le guide le plus simple pour OAuth 2.
125
Takahiko Kawasaki

OAuth n’est pas une API ni un service: c’est un standard ouvert pour authorization et tout le monde peut l’implémenter. OAuth a été créé en réponse au message direct authentication pattern.

C'est OAuth:

How can I allow an app to access my data without necessarily giving it my password?

OAuth Acteurs

enter image description here

OAuth != authentication

OAuth n'est pas une authentification. C’est un protocole d’autorisation ou, mieux encore, un protocole de délégation.

Authentification contre autorisation

Authentication est le processus de vérification d'une identité (qui ils prétendent être)

Authorization est le processus de vérification de ce que quelqu'un est autorisé à faire (permissions)

En savoir plus ici , ici

3
yoAlex5