Autorisation OAuth 2.0

OAuth 2.0 est un framework d'autorisation qui est devenu le standard de facto pour autoriser l'acces aux ressources protegees. Il permet aux applications tierces d'acceder aux donnees des utilisateurs sans exposer les identifiants de l'utilisateur. Au lieu de partager des mots de passe, les services fournissent des tokens.

Contexte

Imaginez que vous souhaitiez utiliser une application tierce qui a besoin d'acceder aux donnees de votre compte Google. Vous ne voudriez pas fournir a cette application tierce votre nom d'utilisateur et mot de passe Google, n'est-ce pas ? C'est la qu'OAuth intervient. Il vous permet d'accorder a cette application l'acces a vos donnees Google sans partager vos identifiants Google.

OAuth 2.0 avec LoadFocus

Bases d'OAuth 2.0

OAuth 2.0 se concentre sur la simplicite pour le developpeur client tout en fournissant des flux d'autorisation specifiques pour les applications web, les applications de bureau, les telephones mobiles et les appareils domestiques. Voici une decomposition simplifiee :

  • Proprietaire de la ressource : L'utilisateur qui autorise une application a acceder a son compte. L'acces de l'application au compte de l'utilisateur est limite au "scope" de l'autorisation accordee (par exemple, lecture ou ecriture d'un type specifique de donnees).

  • Client : L'application qui souhaite acceder au compte de l'utilisateur. Avant de pouvoir le faire, elle doit etre autorisee par l'utilisateur et l'autorisation doit etre validee par l'API.

  • Serveur de ressources : Le serveur hebergeant les comptes utilisateur. Il peut accepter et repondre aux requetes de ressources protegees en utilisant des tokens d'acces.

  • Serveur d'autorisation : Ce serveur verifie l'identite de l'utilisateur puis emet des tokens d'acces a l'application.

Flux OAuth 2.0

Il existe plusieurs "flux" ou "types d'autorisation" pour differents types d'applications et cas d'utilisation :

  • Authorization Code (pour les applications executees sur un serveur web) : C'est le flux le plus courant, en particulier pour les applications web. Il implique de rediriger l'utilisateur vers le service, ou il se connecte. Apres la connexion, il est redirige vers l'application avec un code d'autorisation, que l'application peut echanger contre un token d'acces.

  • Implicit (pour les applications executees dans un navigateur) : Ce flux est pour les applications basees sur l'agent utilisateur (par exemple, les applications monopage) ou le token d'acces est retourne immediatement sans etape supplementaire d'echange de code d'autorisation.

  • Resource Owner Password Credentials : Ce flux permet a l'application de fournir directement le nom d'utilisateur et le mot de passe de l'utilisateur. Il n'est recommande que pour les applications de confiance, car il implique le partage des identifiants de l'utilisateur.

  • Client Credentials : Utilise lorsque le client lui-meme est le proprietaire de la ressource ; par exemple, lorsque le client est un service en arriere-plan.

Tokens

Au lieu d'utiliser les identifiants de l'utilisateur, OAuth 2.0 utilise des tokens. Il en existe deux types :

  • Token d'acces : Permet a l'application d'effectuer des requetes API au nom de l'utilisateur. Il a une courte duree de vie.

  • Token de rafraichissement : Peut etre utilise pour obtenir un nouveau token d'acces si le token d'acces original a expire. Il a une duree de vie plus longue que le token d'acces.

Securite

OAuth 2.0 repose sur SSL/TLS pour la securite. Il garantit la confidentialite des donnees entre le client, le serveur d'autorisation et le serveur de ressources. Meme si des attaquants parviennent a intercepter un token d'acces, ils ne peuvent pas l'utiliser au-dela de son expiration (generalement une courte duree) ou en dehors du scope pour lequel il a ete emis.

Conclusion

OAuth 2.0 est un framework puissant et flexible qui permet aux applications tierces d'acceder aux donnees des utilisateurs sans exposer les identifiants de l'utilisateur. Il est devenu un outil essentiel du web moderne, fournissant aux utilisateurs et aux developpeurs un moyen securise et efficace d'accorder et de gerer les permissions entre differents services et applications.