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.
Réponses:
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:
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.
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.
(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
la source