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.
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 .
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 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.
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.
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.
(Désolé, ces définitions sont extraites de la page aperç de mon entreprise)
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.
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
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)