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 :
Identité numérique : s'identifier avec La Poste
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.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
var express =
require
(
'express'
),
app =
express
(
);
var oauth2 =
require
(
'simple-oauth2'
)({
clientID
:
" VOTRE CONSUMER_KEY ICI "
,
clientSecret
:
" VOTRE CONSUMER_SECRET ICI "
,
site
:
'
{{
base_url}}
'
,
authorizationPath
:
'/oauth/v2/authorize'
,
tokenPath
:
'/oauth/v2'
}
);
// Authorization uri definition
var authorization_uri =
oauth2.
authCode.authorizeURL
({
redirect_uri
:
'http://localhost:3000/callback'
,
scope
:
'openid email phone profile'
,
state
:
'6(ef#)!'
}
);
// Initial page redirecting to La Poste
app.get
(
'/auth'
,
function (
req,
res) {
res.redirect
(
authorization_uri);
}
);
// Callback service parsing the authorization token and asking for the access token
app.get
(
'/callback'
,
function (
req,
res) {
var code =
req.
query.
code;
console.log
(
'/callback'
);
oauth2.
authCode.getToken
({
code
:
code,
redirect_uri
:
'http://localhost:3000/callback'
},
saveToken);
function saveToken
(
error,
result) {
if (
error) {
console.log
(
'Access Token Error'
,
error.
message);
}
token =
oauth2.
accessToken.create
(
result);
console.log
(
"token : "
+
token.
token.
access_token);
oauth2.api
(
'GET'
,
'/me'
,
{
access_token
:
token.
token.
access_token},
function (
err,
data) {
if (
err) {
console.log
(
err);
res.send
(
err);
return;
}
console.log
(
data);
res.send
(
data);
}
);
}
}
);
app.get
(
'/'
,
function (
req,
res) {
res.send
(
'<a href="/auth">Identification</a>'
);
}
);
app.listen
(
3000
);
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
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.