Tutoriel La Poste IDentité Numérique

Intégration d'une API d'authentification avec Node.js

Jérémie Robert

L'Internet étant aujourd'hui accessible par tous et offrant de plus en plus de services, se pose le problème de la sécurité de l'information et plus particulièrement des données personnelles mais également de la réalité des internautes avec qui nous pouvons échanger. La gestion de l'identité numérique devient un enjeu majeur. La Poste propose une solution sécurisée pour les internautes avec son système de compte vérifié en face à face : L'IDentité Numérique de La Poste.

Dans ce tutoriel, nous allons voir ce qu'est cette API, à quoi elle va servir, pour quoi s'en servir, et comment l'intégrer dans votre application pour doper vos ventes et rassurer vos interlocuteurs.

Pour réagir au contenu de cet article, un espace de dialogue vous est proposé sur le forum : Commentez .

- Titre : Tutoriel La Poste IDentité Numérique

- Auteur : Jérémie Robert

- Parution : 9 décembre 2014

- Mise à jour : 9 décembre 2014

- Licence : Le contenu de cet article est rédigé par Jérémie Robert et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas de Modification 3.0 non transposé. Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 Developpez.com.

Voir également :

- Tutoriel La Poste IDentité Numérique - Intégration d'une API d'authentification avec Java

- Tutoriel La Poste IDentité Numérique - Intégration d'une API d'authentification avec PHP

Sommaire

- I. Introduction de La Poste et du langage utilisé

- I-A. Histoire de La Poste

- I-B. Qu'est-ce que l'IDentité Numérique ?

- I-C. Rappel du langage

- II. Découverte de l'API et de ses intérêts

- II-A. Description de l'API

- II-A-1. Comment ça marche ?

- II-B. Usages

- II-B-1. Quels sont les usages actuels ?

- III. Intégration de l'API

- III-A. Clés de développement

- III-B. Utilisation d'une bibliothèque cliente OAuth2

- III-C. Installation et initialisation

- III-D. Authentification et autorisation

- IV. Liens utiles

- V. Remerciements

I - Introduction de La Poste et du langage utilisé

I-A - Histoire de La Poste

Société anonyme à capitaux publics depuis le 1er mars 2010, La Poste est un modèle original de groupe structuré autour de cinq branches : Services-Courrier-Colis, La Banque Postale, Réseau La Poste, GeoPost, Numérique.

Le Groupe est présent dans plus de 40 pays sur 4 continents.

Chaque jour, les 17 000 points de contact de La Poste, soit le 1er réseau commercial de proximité de France, accueillent 1,7 million de clients.

La Poste distribue 25 milliards d'objets par an dans le monde (lettres, imprimés publicitaires et colis), 6 jours par semaine.

En 2013, le Groupe La Poste a réalisé un chiffre d'affaires de 22,08 milliards d'euros, dont 17 % à l'international, et emploie plus de 266 000 collaborateurs.

Le Groupe La Poste, dans son plan stratégique « La Poste 2020 : Conquérir l'avenir » s'est donné pour objectif d'accélérer le développement de ses cinq branches et de conquérir de nouveaux territoires.

La Poste met le facteur humain et la confiance au cœur de la relation avec ses clients. Grâce à la convergence de ses réseaux, présente pour tous, partout et tous les jours, elle accompagne ses clients pour leur simplifier l'avenir.

La Poste est ainsi prestataire de services numériques via ses offres en ligne (MonTimbrenligne, Lettre recommandée électronique, …) disponibles sur laposte.fr, ses applications mobiles, les réseaux sociaux, mais aussi son webmail laposte.net, son coffre-fort électronique Digiposte et ses filiales BtoB : Mediapost Communication et Docapost.

I-B - Qu'est-ce que l'IDentité Numérique ?

L'IDentité Numérique peut être définie comme un lien technologique entre une entité réelle (personne, organisme ou entreprise) et une entité virtuelle (sa ou ses représentations numériques).

Le développement et l'évolution des moyens de communication, au travers notamment de la multiplication des blogs et des réseaux sociaux, changent le rapport de l'individu à autrui. Ainsi, l'IDentité Numérique permet l'identification de l'individu en ligne et la mise en relation de celui-ci avec cet ensemble de communautés virtuelles qu'est Internet.

Dès lors, l'IDentité Numérique peut être divisée en trois catégories :

- l'identité déclarative, qui se réfère aux données saisies par l'utilisateur comme son nom, sa date de naissance, ou autres informations personnelles directement renseignées par l'individu ;

- l'identité agissante, qui est indirectement renseignée par les activités de l'utilisateur sur la toile ;

- l'identité calculée, qui résulte d'une analyse de l'identité agissante par le système, comme le nombre de communautés virtuelles dans lesquelles l'individu évolue ou bien son nombre d'amis sur les réseaux sociaux.

Le décalage ou du moins les divergences qui peuvent subsister entre l'identité déclarative et l'identité agissante soulèvent une question majeure. Qui est vraiment l'individu auquel nous avons affaire sur la toile ?

Enfin, Internet étant accessible par tous et offrant de plus en plus de services, se pose le problème de la sécurité de l'information et plus particulièrement des données personnelles. La gestion de l'identité numérique devient alors un enjeu majeur.

Voilà le principe du l'IDentité Numérique, pour plus d'informations, voici le lien Wikipédia.

Ainsi, La Poste propose une solution sécurisée pour les internautes avec son système de compte vérifié en face à face. Pour obtenir une IDentité Numérique de La Poste, l'internaute doit créer un compte et faire vérifier son identité par un postier afin d'activer ce compte (un postier est un agent assermenté). En utilisant son IDentité Numérique pour s'authentifier sur un site partenaire, il choisit de partager ses données vérifiées avec ce site et atteste ainsi que sa réelle identité et que son adresse postale ont été vérifiées. L'internaute garde la main sur ses données, La Poste les sécurise et ne trace pas ses actions.

Grâce à ce service, La Poste donne à l'internaute la possibilité d'accéder à plus de services sécurisés comme la réception des lettres recommandées en ligne en toute légalité.

I-C - Rappel du langage

Le langage utilisé durant ce tutoriel est Node.js. Vous pourrez réviser vos bases sur la section Développez prévue à cet effet : Cours et tutoriels Node.js

II - Découverte de l'API et de ses intérêts

II-A - Description de l'API

L'IDentité Numérique de La Poste : une identité vérifiée en face à face par le facteur au domicile des internautes.

C'est un service permettant à son détenteur de prouver qui il est grâce à l'identifiant et au mot de passe qu'il a choisis lors de son inscription, sans dévoiler son identité aux autres internautes.

II-A-1 - Comment ça marche ?

Il suffit d'utiliser le bouton de connexion « La Poste Connect » intégré par les applications partenaires.

II-B - Usages

L'utilité de ce service est donc de fournir un identifiant numérique qui permet d'attester de son identité sur le web !

II-B-1 - Quels sont les usages actuels ?

Le produit étant encore en bêta-test, les usages sont encore peu développés.

Aujourd'hui, l'IDentité Numérique permet de gagner du temps puisque son détenteur peut :

- recevoir des lettres recommandées en ligne (sous réserve qu'elles aient été expédiées depuis le site boutiqueducourrier.laposte.fr) ;

- créer et activer des contrats de procurations en trois clics pour permettre à un tiers de réceptionner des courriers ou des colis à sa place (monespaceclient.laposte.fr).

- afficher un badge « IDentité vérifiée par La Poste » sur son profil sur site collaboratif pour donner encore plus de confiance aux internautes qui souhaitent échanger avec lui.

Le détenteur d'un compte peut également doper ses ventes sur des sites d'échanges et de location entre particuliers (prêtachanger.fr et buzzcar) en rassurant ses interlocuteurs. Un badge s'affiche sur son profil attestant que son identité a été vérifiée par La Poste.

Pour plus d'explications, nous vous invitons à visionner la vidéo ci-dessous :

Animation en format "youtube" non supportée.
Contenu uniquement consultable en ligne à cette adresse :
https://www.youtube.com/watch?v=USsQRTsWIZo&feature=youtu.be&list=PLuWdndyU6Bbg3ckpqEZkLZ2DTaF5VMMRy

III - Intégration de l'API

III-A - Clés de développement

Pour créer une application cliente, il vous faudra les clés de développement qui vous seront données après votre inscription et qui ressembleront par exemple à ça :

CONSUMER_KEY : _kdvsazaaphmytp4gzoi8jdbal02pfgfh5l0w12iud

CONSUMER_SECRET : _vofna5navs92smal88obo2c2s4mah1k99i5r1xls

*clés factices

III-B - Utilisation d'une bibliothèque cliente OAuth2

Il y a de nombreux clients OAuth2 disponibles pour la plupart des langages de programmation. Afin de ne pas réinventer la roue, nous allons utiliser une bibliothèque Node.js, “simple-oauth2”, disponible sur GitHub ( https://github.com/andreareginato/simple-oauth2 ).

La bibliothèque “simple-oauth2” fournit un ensemble de fonctionnalités utiles à la communication avec les serveurs d'identifications pour accéder aux services de l'API Anywhere. Il s'agit notamment de rendre transparente l'utilisation du protocole d'autorisation OAuth2, et de se concentrer sur la logique du service à fournir aux utilisateurs finaux.

En supprimant la nécessité de gérer les jetons d'accès manuellement, “simple-oauth2” simplifie énormément le processus d'authentification et d'autorisation des utilisateurs de notre application cliente.

“simple-oauth2” est développé en Node.js et peut être intégré aux framework Node.js les plus courants.

Notre projet de démonstration utilisera aussi le framework javascript Express pour faciliter la gestion des routes.

Toute la documentation pour son installation et son utilisation est disponible, en anglais : Documentation sur Express.

Afin de ne pas se focaliser sur une plateforme dédiée, ce document utilise la notation {{base_url}} pour référencer le serveur IDN cible. Par exemple, pour cibler la plateforme de recette, {{base_url}} est égal à l'adresse qui vous sera envoyée par e-mail dès votre demande d'adhésion au service IDN soumise, dans notre cas : https://anywhere-sandbox.idn.laposte.fr/.

III-C - Installation et initialisation

Vous pouvez installer facilement les dépendances via NPM :

Bibliothèque cliente OAuth2 : npm install simple-oauth2

Framework javascript : npm install express

III-D - Authentification et autorisation

On peut alors utiliser “simple-oauth2” avec pour configuration minimum, la clé et le secret de l'application partenaire (CONSUMER_KEY et CONSUMER_SECRET).

Pour ce qui concerne l'authentification et l'autorisation, IDN possède la fonctionnalité SSO OAuth2. Il est alors possible de déléguer l'authentification de l'utilisateur au serveur IDN, puis d'utiliser la session établie.

Concernant notre application nous allons donc commencer par créer un fichier app.js contenant le code nécessaire à l'identification. Sa mission est de rediriger l'utilisateur vers le formulaire d'identification La Poste, le serveur d'autorisation, puis, pour la démonstration, d'afficher les données de type : nom, prénom, téléphone…

Il s'agit donc de l'application cliente. Si La Poste autorise l'accès, le serveur d'autorisation envoie un code d'autorisation à notre application cliente. Le code est ensuite échangé par un jeton d'accès. Enfin, notre application utilise ce jeton d'accès pour accéder aux données du profil de l'utilisateur par le serveur de ressources.

1. var express = require('express'),

2. app = express();

4. var oauth2 = require('simple-oauth2')({

5. clientID: "  VOTRE CONSUMER_KEY ICI ",

6. clientSecret: " VOTRE CONSUMER_SECRET ICI ",

7. site: ' {{base_url}} ',

8. authorizationPath: '/oauth/v2/authorize',

9. tokenPath: '/oauth/v2'

10. });

12. // Authorization uri definition

13. var authorization_uri = oauth2.authCode.authorizeURL({

14. redirect_uri: 'http://localhost:3000/callback',

15. scope: 'openid email phone profile',

16. state: '6(ef#)!'

17. });

19. // Initial page redirecting to La Poste

20. app.get('/auth', function (req, res) {

21. res.redirect(authorization_uri);

22. });

24. // Callback service parsing the authorization token and asking for the access token

25. app.get('/callback', function (req, res) {

26. var code = req.query.code;

27. console.log('/callback');

28. oauth2.authCode.getToken({

29. code: code,

30. redirect_uri: 'http://localhost:3000/callback'

31. }, saveToken);

33. function saveToken(error, result) {

34. if (error) { console.log('Access Token Error', error.message); }

35. token = oauth2.accessToken.create(result);

36. console.log("token : " + token.token.access_token);

37. oauth2.api('GET', '/me', {access_token: token.token.access_token}, function (err, data) {

38. if (err) { console.log(err);res.send(err);return; }

39. console.log(data);

40. res.send(data);

41. });

42. }

43. });

45. app.get('/', function (req, res) {

46. res.send('<a href="/auth">Identification</a>');

47. });

49. app.listen(3000);

51. console.log('Express server started on port 3000');

Pour cette démonstration, le jeton d'accès est affiché à l'utilisateur. Dans une application en production, l'utilisateur ne doit pas avoir accès à ce jeton, à vous de le stocker. La Poste envoie également d'autres informations en dehors du jeton d'accès comme la durée de validité du jeton d'accès.

Pour lancer l'application : node app.js

Si vous avez correctement configuré les variables redirect_uri, clientID, clientSecret et site, vous devez voir le lien identification si vous ouvrez votre navigateur avec le port 3000 (exemple : http://localhost:3000). Un simple clic vous redirigera vers le site d'identification de La Poste. Une fois identifié, vous serez redirigé vers votre application qui affichera simplement les données de votre compte.

IV - Liens utiles

- Le site de la Poste pour trouver toutes les infos utiles sur comment intégrer votre API : Développeurs IDN La Poste.

- Le site Developpez.com pour les tutos Node.js.

- Retrouvez le code source de l'intégration de l'API IDentité Numérique dans une application sur le compte Github de BeMyApp France.

- Utilisez le hashtag #LaPostedev sur Twitter pour échanger avec La Poste sur ce service.

Vous pouvez contacter La Poste pour toutes vos questions techniques via Contact

V - Remerciements

Nous tenons à remercier Jérémie Robert - CTO de milliweb - de nous avoir donné la possibilité de publier ce tutoriel sur Developpez.com.

Je tiens également à remercier Claude LELOUP pour sa relecture et ses corrections.