Autorisation OAuth vs authentification

87

La terminologie OAuth me dérange depuis longtemps maintenant. L'autorisation OAuth est-elle 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 quelqu'un à accéder à une ressource, mais OAuth ne semble pas avoir d'implémentation permettant réellement l'accès aux utilisateurs à une ressource donnée. Toutes les implémentations OAuth dont on parle est de fournir à un utilisateur un jeton (signé et parfois chiffré). Ce jeton est ensuite passé avec chaque appel à un point de terminaison de service principal où sa validité est vérifiée, encore une fois pas un problème OAuth.

L'authentification OAuth (chaque article dit que ce n'est pas le cas) est-elle que je suppose qu'un utilisateur doit fournir des informations d'identification, ce qui prouve à son tour qu'un utilisateur devrait / ne devrait pas avoir accès?

Il semble donc que OAuth n'est pas une autorisation NI une authentification, car celles-ci doivent être effectuées par d'autres processus. Alors qu'est-ce que c'est? S'agit-il d'un processus de communication d'un jeton? Est-ce un mot fluff qui n'a vraiment pas de sens spécifique?

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

Edgarhsanchez
la source
J'ai également trouvé ces réponses utiles: security.stackexchange.com/questions/44611/…
antak
OAuth 2.0 est un protocole de sécurité. Détails: stackoverflow.com/a/54304326/3623172
Rajat

Réponses:

150

OAuth est une spécification d'autorisation

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

Le point de terminaison d'autorisation est utilisé pour interagir avec le propriétaire de la ressource et obtenir une autorisation d'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 (par exemple, nom d'utilisateur et mot de passe de connexion, cookies de session) sort du cadre de cette spécification .


Authentification OAuth?

L'authentification traite des informations sur «qui on est». L'autorisation traite des informations sur «qui accorde quelles autorisations à qui». Le flux d'autorisation contient l'authentification comme première étape. C'est la raison pour laquelle les gens sont souvent confus.

De nombreuses bibliothèques et services utilisent OAuth 2.0 pour l'authentification. On l'appelle souvent "connexion sociale" et cela 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 d'authentification. Ceux qui ont fait les spécifications s'attendaient à ce que les gens utilisent OpenID pour l'authentification. Cependant, certaines personnes ont commencé à utiliser OAuth 2.0 pour l'authentification (pas pour l'autorisation) et l'authentification OAuth a prévalu rapidement.

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

Oui, cela a rendu les gens beaucoup plus confus.


Définitions en une phrase d'OAuth 2.0 et d'OpenID Connect

OAuth 2.0 est un framework dans lequel un utilisateur d'un service peut permettre à une application tierce d'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.

entrez la description de l'image ici

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

entrez la description de l'image ici

(Désolé, ces définitions sont extraits de la liste page de mon entreprise)


Définitions du point de vue des réalisateurs

L'authentification est un processus pour déterminer le sujet (= identifiant unique) d'un utilisateur final. Il existe de nombreuses façons de déterminer le sujet. ID et mot de passe, empreintes digitales, reconnaissance de l'iris, etc.

L'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. L'implémenteur complet d'OAuth et d'OpenID Connect discute des résultats
  2. Diagrammes et films de tous les flux OAuth 2.0
  3. Diagrammes de tous les flux OpenID Connect
  4. Le guide le plus simple d'OAuth 2.0
Takahiko Kawasaki
la source
13
Pour ceux qui se demandent pourquoi l' authentification basée sur OAuth n'était pas suffisamment sécurisée , je suppose que ces pièges courants en sont la raison .
antak
4
"Le flux d'autorisation contient l'authentification comme première étape. C'est la raison pour laquelle les gens sont souvent confus." Or.
Sully
1
Eh bien, la seule différence que je peux voir entre les deux diagrammes est que le premier contient les «données de l'utilisateur» et le second contient «l'identité de l'utilisateur», donc oui, c'est déroutant.
Joel_Blum