IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Tutoriel La Poste IDentité Numérique

Intégration d'une API d'authentification avec PHP

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 Donner une note à l´article (5).

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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 mobile, 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 sur 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 à 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 PHP. Vous pourrez réviser vos bases sur la section Développez prévue à cet effet : Cours et tutoriels PHP

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 ?

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.

L'objectif de ce tutoriel est de vous montrer comment intégrer la solution dans votre application pour doper vos ventes et rassurer vos interlocuteurs.

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

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 PHP, “PHP-OAuth2”, disponible sur GitHub.

La bibliothèque PHP-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 OAuth, 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, PHP-OAuth2 simplifie énormément le processus d'authentification et d'autorisation des utilisateurs de notre application cliente.

PHP-OAuth2 est développé en PHP5 et peut être intégré aux frameworks PHP les plus courants.

Notre projet de démonstration utilisera aussi Composer pour faciliter l'installation et les mises à jour de la bibliothèque.

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

Le fichier Composer à placer à la racine du projet :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
{
    "name": "bemyapp/laposte",
    "description": "Demonstration IDN La Poste PHP",
    "license": "LGPL-2.1",
    "authors": [
        {
            "name": "Jérémie Robert contact@appydo.com"
        }
    ],
    "require": {
        "php": ">=5.3",
        "adoy/oauth2": "dev-master"
    }
}

Finalement, 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

Maintenant que le fichier JSON dédié à Composer est créé, vous pouvez installer facilement les dépendances via Composer : php composer.phar install

Pour les mises à jour : php composer.phar update

Astuce : lors du passage en production, Composer dispose d'une fonctionnalité pour améliorer la gestion des bibliothèques et gagner en performance.

 
Sélectionnez
php composer.phar update --optimize-autoloader

III-D. Authentification et autorisation

On peut alors utiliser PHP-OAuth2 avec pour configuration minimum, la clef 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 config.php contenant les informations nécessaires à l'identification :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
<?php
const CLIENT_ID         = ' VOTRE CONSUMER_KEY ICI ';
const CLIENT_SECRET = ' VOTRE CONSUMER_SECRET ICI ';

const REDIRECT_URI                     = ' URL DE VOTRE SCRIPT DE RETOUR ';
const AUTHORIZATION_ENDPOINT = '{{base_url}}/oauth/v2/authorize';
const TOKEN_ENDPOINT                = '{{base_url}}/oauth/v2';
const API                                      = '{{base_url}}/v2';

Le dernier fichier et le plus important : index.php. 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 token d'accès. Enfin, notre application utilise ce token d'accès pour accéder aux données du profil de l'utilisateur par le serveur de ressources.

 
Sélectionnez
1.
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.
<?php
// Fichier créer par Composer ; permet d'inclure PHP-OAuth2
require 'vendor/autoload.php';

// Le fichier config.php contenant les informations
require 'config.php';

// On instancie le client PHP OAuth2 avec CONSUMER_KEY (CLIENT_ID) et CONSUMER_SECRET (CLIENT_SECRET)
$client = new \OAuth2\Client(CLIENT_ID, CLIENT_SECRET);

// Si le visiteur n'est pas identifié, on le redirige vers le formulaire La Poste
if (!isset($_GET['code']))
{
    // Les paramètres :
    // Le scope est un paramètre qui sert à limiter les droits du token d'accès
    // State permet d'éviter les failles de type Cross-Site Request Forgery
    $params   = array('state'=>uniqid(), 'scope'=>'openid email phone profile');
    // On génère l'url avec les variables
    $auth_url = $client->getAuthenticationUrl(AUTHORIZATION_ENDPOINT, REDIRECT_URI, $params);
    // On redirige le visiteur
    header('Location: ' . $auth_url);
}
// Si le visiteur est identifié, on affiche ses informations
else
{
    $params = array('code' => $_GET['code'], 'redirect_uri' => REDIRECT_URI);
    // On récupère le token d'accès via le serveur d'autorisation
    $response = $client->getAccessToken(TOKEN_ENDPOINT, 'authorization_code', $params);
    // On affiche la réponse avec le token d'accès
    // Attention, en production il doit rester confidentiel
    var_dump($response);
    $client->setAccessToken($response['result']['access_token']);
    $fetch_me = $client->fetch( API . '/me' );
    // On affiche le profil de l'utilisateur (nom, email, téléphone...)
    var_dump($fetch_me);
}

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

IV. Informations utiles

  • Le site de la Poste pour trouver toutes les infos utiles à votre intégration d'API : Développeurs IDN La Poste.
  • Le site Developpez.com pour les tutos PHP.
  • Retrouvez le code source de l'integration 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 .

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.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Licence Creative Commons
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.