API Documentation Bêta

1. Création de compte

Vous devez, afin d'utiliser notre API, avoir un compte. Contactez-nous afin d'en ouvrir un.

2. L'authentification Digest

Une fois votre compte créé vous devez utiliser vos logins afin de vous identifier auprès de l'API.

L'authentification Digest se déroule en plusieurs étapes :

  • Le client tente d'accéder aux ressources du serveur.
  • Le serveur refuse l'accés au client, mais lui transmet les informations qui lui permettront de s'authentifier
  • Avec ces informations ainsi que ses informations personnelles, le client peut s'authentifier auprès du serveur

Réponse du serveur après la première tentative de connexion du client

Exemple :

HTTP/1.0 401 Unauthorized
Date: Tue, 03 Mar 2015 11:22:23 GMT
Server: Apache/2.2.16 (Debian)
X-Powered-By: PHP/5.3.3-7+squeeze14
WWW-Authenticate: Digest
    realm="API_KEY",
    qop="auth"
    nonce="54f5996f68945",
    opaque="dca7ccea4b814a3bbda804ba4cade4fa"
Content-Length: 41
Connection: close
Content-Type: application/json; charset=utf-8

Création de l'authentification du client

Les informations importantes que devra récupérer le client :

  • realm : Une chaîne qui sera utilisée du coté client et dans le cadre de la table de hachage
  • qop : type d'authentification
  • nonce : un code unique , qui sera utilisé dans le hachage et doit être renvoyé par le client
  • opaque : cela peut être considéré comme un identifiant de session

Les informations que devra générer le client et qui devront ensuite être envoyées au serveur afin d'accéder aux ressources :

  • username : votre identifiant
  • realm : récupéré précédemment dans la réponse du serveur
  • nonce : récupéré précédemment dans la réponse du serveur
  • uri : l'URI cible
  • response : le hash de validation. Voir ci-dessous
  • opaque : récupéré précédemment dans la réponse du serveur
  • qop : récupéré précédemment dans la réponse du serveur
  • nc : Nonce-Count. Ceci est un numéro de série hexadécimal pour la demande.
  • cnonce : Id unique généré par le client

Création de la "response"

A1 = md5(username:realm:password)
A2 = md5(request-method:uri) // request method = GET, POST, etc.
Responce = md5(A1:nonce:nc:cnonce:qop:A2)

Exemple :

GET /beneficiaire/info/code_client/011014 HTTP/1.1
Authorization: Digest
    username="compte_test"
    realm="API_KEY"
    nonce="54f5996f9174f"
    uri="/beneficiaire/info/code_client/xxxx"
    cnonce="NDI2Mzk1"
    nc=00000001
    qop="auth"
    response="db7d940ab3bce09b3b7376f0741cfdc6"
    opaque="dca7ccea4b814a3bbda804ba4cade4fa"
Host: api.applewood-stim.fr

Une fois ces informations envoyées, le serveur les vérifie et envoie les ressources demandées si l'identification a abouti.

Informations utiles

Des librairies existent afin de simplifier l'authentification Digest (cURL pour PHP, libcurl pour Java etc...).

Liens utiles :