OAuth qu’est-ce que c’est ?

 

 

 

Il est tout d’abord important de faire la différence entre OAuth et Auth0 :

 

 

  • OAuth est un protocole d’autorisation standardisé.
  • Auth0 est une entreprise qui vend une plate-forme de gestion d’identités avec des services d’authentification et d’autorisation qui implémente OAuth.

 

Oauth permet d’autoriser un site web ou une application à utiliser l’API (avoir accès aux données) d’un autre site web pour le compte d’un utilisateur. OAuth n’est pas un protocole d’authentification, mais de délégation d’autorisation. C’est-à-dire que la tâche principale de OAuth est de vous permettre d’avoir accès à des données sans devoir vous identifier à chaque fois. EN effet, un jeton d’autorisation ou token est retourné si l’authentification a réussi, ensuite, votre application peut utiliser ce token pour obtenir un accès aux données. Ce jeton d’authentification a une durée de vie de quelques minutes ou heures à plusieurs jours.  

 

Bien qu’Oauth règle un problème d’identification, sa tâche principale est la délégation d’autorisation. 

 

Il y a actuellement deux versions : OAuth 1.0 et OAuth 2.0. Cet article traitera la version 2.0.

 

Exemple 1 :

 

Imaginons que vous êtes un éditeur de logiciels de gestion de comptabilité. Vous permettez à vos utilisateurs de gérer leurs factures, timbrages etc. Votre logiciel connait un franc succès et votre nombre d’utilisateur ne fait que d’augmenter. Vous souhaitez permettre à d’autres éditeurs et développeurs de logiciels d’accéder aux données gérées par votre logiciel de comptabilité.  

 

 

 

Dans ce cas, une possibilité s’offre à vous. Vous pouvez fournir un accès à votre base de données à travers une API pour que d’autres développeurs créent leurs applications en se basant sur vos services. 

 

 

 

Exemple 2 :

 

 

 

Afin de pouvoir importer des photos Instagram sur votre profil Facebook. En utilisant ce protocole ces deux applications bénéficient de plus d’interactions et offrent plus de possibilités à ses utilisateurs.

 

  

 

Exemple 3 :

 

 

 

Comme exemple concret nous pourrions prendre une application de contacts sur smartphone qui vous propose d’importer des contacts avec votre compte Google. En acceptant la demande, l’application de contacts va pouvoir ajouter d’autres numéros grâce à l’accès que vous lui avez donné à votre compte Google.

 

 

 

Lorsque nous utilisons OAuth, cela signifie qu’une application cliente va pouvoir utiliser ce protocole pour aller chercher des données qu’une autre application qui a décidé de les rendre disponibles grâce à ce protocole.

 

 

 

Qu’apporte OAuth de plus ?

 

 

 

Reprenons le cas de votre application de contacts qui utilise la base de données Google. Quelques jours ont passés depuis votre première autorisation, mais vous avez rajouté des contacts à votre compte Google. Il faut désormais synchroniser votre application smartphone avec les nouveaux contacts qui ont été ajoutés dans votre compte Google. 

 

 

Ne serait-ce pas pénible de devoir s’identifier à vote compte Google à chaque fois que de nouveaux contacts ont été ajoutés à votre compte ? Et bien c’est à ce moment précis que OAuth devient très utile. Lors de votre première autorisation, quand vous vous êtes connecté à votre compte Google, ce dernier à donné un jeton d’accès afin que votre application ne doivent plus effectuer de nouvelles connexions.

 

Le fonctionnement technique OAuth 2.0 :

 

 

Termes importants :  

 

  1. Access Token : Clé valabe de courte durée
  2. Refresh Token : Clé valable de longue durée qui sert à renouveler l’Access Token
  3. Scope : Catégorie d’autorisation que l’application va demander : contact, tâche, etc.
  4. Client ID : Clé unique qui sert d’identifiant, elle est publique
  5. Client Secret : Clé secrète uniquement connue par l’application et le server d’autorisation

 

 

 

 

 

 

 

Étape 1 – Requêter et recevoir un code d’accès :

Vous allez tout d’abord faire une requête à l’url du service. Cette url va rediriger votre application vers le formulaire de connexion du logiciel, en l’occurrence BEXIO :

https://office.bexio.com/oauth/authorize?client_id=0000000000&redirect_uri=00000://00000&state=0000000000&scope=contact_show project_show task_show monitoring_edit

L’url contient des paramètres qui peuvent varier selon les applications ou logiciel. Il ne faut pas prendre ce cas comme une généralité.

Paramètres :

  • Le domaine logiciel: Il correspond au point d’entrée de votre url
  • Le client ID : Il est votre identifiant client, il est important de le connaître et il se peut que vous deviez le demander
  • Le redirect uri : Il va vous permettre de revenir sur votre application car dans beaucoup de cas, l’appel de ce service va ouvrir un navigateur web
  • Le state : C’est le paramètre d’état, il préserve certains objets d’état définis par le client dans la demande d’autorisation et les met à la disposition du client dans la réponse
  • Le scope : Ils correspondent aux autorisations que l’application va demander

Étape 2 – Requêter et recevoir un Access Token :

 Le client s’identifie puis valide l’accès de l’application aux ressources de son logiciel de comptabilité. L’utilisateur reçoit un code d’accès qui va être utilisé pour demander un Access Token. Vous devez maintenant faire une nouvelle requête pour obtenir un Access Token.

https://office.bexio.com/oauth/access_token?client_id=0000000000&redirect_uri=0000000000&client_secret=0000000000&$codeToken

Paramètres :

  • Le domaine logiciel: Il correspond au point d’entrée de votre url
  • Le client ID : Il est votre identifiant client, il est important de le connaître et il se peut que vous deviez le demander
  • Le client secret : Clé connue uniquement de l’application et du serveur d’autorisation
  • Le code : Il est utilisé par les applications Web et les applications natives pour obtenir un jeton d’accès après qu’un utilisateur ait autorisé une application

Étape 3 – Recevoir les données :

Il est désormais temps de faire une requête au service de Bexio. Voici l’url :

https://office.bexio.com/api2.php/$org/contact

Il est important d’ajouter le header avec les paramètres demandés. Les cas varient selon les applications.

Le fonctionnement utilisateur OAuth 2.0 :

Reprenons notre exemple du logiciel de comptabilité. Vous venez d’installer une application mobile indépendante de votre logiciel et vous vous y connecter pour la première fois. Voici le déroulement :

1. Vous allez ouvrir votre application et à ce moment-là vous allez être redirigé sur la page d’authentification de votre logiciel de comptabilité. En l’occurrence il s’agit de Bexio pour cet exemple.

2. Vous verrez désormais apparaître un formulaire de connexion qui vous demande de vous identifier à travers votre logiciel de comptabilité.

3. Vous êtes désormais sur une nouvelle page qui demande votre accord pour autoriser votre nouvelle application à utiliser les données comme vos factures, vos heures effectuées ou bien vos tâches afin de les retrouver dans l’application que vous venez d’installer.

4. Vous acceptez et à présent vous êtes renvoyé à nouveau sur votre application. Vous avez désormais tous vos contacts Bexio dans cette application.

Le code source :

Vous pouvez télécharger le code source avec le lien suivant : cliquez-ici

Il vous suffira de remplacer les 000000 qui apparaît dans les urls du fichier 0.LoginActivity.Modifiez ensuite ces valeurs avec celles qui vous ont été attribuées.