Qu'est-ce que OAuth ?
OAuth est un protocole utilisé pour échanger des informations d'autorisation, permettant à plusieurs services en ligne d'interagir sous l'autorisation de l'utilisateur. « OAuth 1.0 » a été publié sous la forme de RFC 5849 en avril 2010, et « OAuth 2.0 » a suivi sous la forme de RFC 6749 en octobre 2012.
Imaginez que vous souhaitiez publier une photo sur Instagram et la partager automatiquement sur Twitter. Accéder manuellement aux deux services pour créer la même publication peut être fastidieux. Au lieu de cela, Instagram propose une fonctionnalité appelée cross-posting, qui permet le partage automatique de vos publications Instagram sur d'autres réseaux sociaux, tels que Twitter, en utilisant leurs API. Ce processus est facilité par OAuth.
Pour publier sur Twitter, l’authentification typique nécessite un identifiant utilisateur et un mot de passe, appelé authentification de base. Cependant, partager ces informations d’identification sensibles avec un autre service est risqué. OAuth résout ce problème en échangeant des informations d’autorisation plutôt que des informations d’identification d’authentification, accordant des autorisations limitées pour la tâche.
Dans la terminologie OAuth :
Pour lancer le processus, le client OAuth doit d’abord s’enregistrer auprès du serveur OAuth en fournissant des détails tels que le nom de son application et son domaine. Si le serveur OAuth considère que le client est digne de confiance, il attribue un ID client.
Lorsque l’utilisateur (propriétaire de la ressource) donne son autorisation, le client OAuth redirige l’utilisateur vers le serveur OAuth. Le serveur OAuth authentifie l'utilisateur et demande si les autorisations indiquées doivent être accordées au client OAuth. Une fois l'approbation de l'utilisateur obtenue, le serveur redirige l'utilisateur vers le client OAuth, en lui accordant un jeton d'accès. Ce jeton sert de preuve d'autorisation et permet au client OAuth d'accéder à l'API du serveur OAuth. Il reste valide jusqu'à son expiration ou sa révocation explicite.