Authentification à l’API du FMANAGER – getAuth.php

Tous les exemples seront en PHP mais vous pouvez vous connecter en utilisant n’importe quel language. Nous avons en place une REST API qui renvoie du JSON.

Comment s’authentifier à l’API du FMANAGER ?

Pour l’instant, seuls les utilisateurs avec un rôle “étudiant” sont autorisés à se connecter via l’API.

Vous devez être munis de 3 clés :

  • Votre clé “développeur“, elle est de 32 caractères, nous l’appelerons TOKENAPI. Elle identifie votre société ou personne qui utilise le FMANAGER dans son application. Elle est bien sûr unique et vous identifie. Elle est obligaroire dans toute opération avec l’API.
  • Votre clé de cryptage 1 . On l’appelle FIRSTKEYAPI. Elles sont associées à l’accès sur le domaine que vous visez (l’école)
  • Votre clé de cryptage 2.  On l’appelle SECONDKEYAPI. Elles sont uniques par écoles.

La clé développeur vous permet de vous connecter à toutes les écoles que nous gérons MAIS

Les FIRSTKEYAPI et SECONDKEYAPI sont liées à chaque école.

Pour vous connecter à une école donnée, il vous faut donc 3 clés.

Cela nous permet d’avoir un trafic crypté differemment en fonction des écoles que nous hébergeons.

Un développeur qui n’aura eu que les clés de l’école X “ne comprendra rien” à ce qui se passe pour l’école Y car les données seront cryptées differemment et impossible à décrypter pour lui.

C’est une première mesure de confinement et de ségrégation des données de l’API.

L’authentification se passe comme cela :

Vous devez avoir votre TOKENAPI (clé développeur) dans votre script de votre coté

Vous avez le login et le mot de passe de l’étudiant pour qui vous voulez réaliser des opérations (voir ses données, les modifier etc..)

1 – Coder l’email

$coding_email=secured_encrypt(“email@etudiant.com”);

nous vous fournissons la fonction secured_encrypt(). C’est une fonction de cryptage symétrique qui utilise AES-256-CBC et SHA3-512. La chaine de caractère est symétrique – on la décode de notre coté avec les bonnes clés – mais la cracker est quasi impossible.

2 – Coder le mot de passe

$coding_password=secured_encrypt(“le mot de passe”);

3 – Former le payload en JSON

$payload = json_encode(array(“a” =>$coding_email,
“b” =>$coding_password));

Vous devez conserver a et b comme index de ce tableau. Ne les changez pas.

4 – Faire l’appel à notre endpoint pour l’authentification qui s’appelle getAuth.php

header(‘Content-Type: application/json’); // Specify the type of data
$ch = curl_init($_DOMAIN.’/api/getAuth.php’); // Initialise cURL . $_DOMAIN est le domaine de votre école sur lequel est le FMANAGER
$authorization = “Authorization: Bearer “.$TOKENAPI; // Utilisez votre TOKENAPI ici et envoyez-le en entête.
curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘Content-Type: application/json’ , $authorization )); // Inject the token into the header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // This will follow any redirects
$result = curl_exec($ch); // Execute the cURL statement
curl_close($ch); // Close the cURL connection
echo $result;

5 – Vous devez récupérer un JSON qui représente un tableau ou un objet :

{"token":"f7330ff05e75f2ba2cd3798eaceb1a86","renew_token":"390f1e3327ab6b28ff0f5e3141f4eccfcb6f3ee79ff9611ea09707a0fe3526446e9b461820ea60bf6f1f7435e43f5366c3aeb0e4b4a74080","expiration":"1622990000"}

Le token est votre code d’autorisation pour continuer (voir prochaine leçon)

Le renew_token est le token de renouvellement. Il vous sera utile pour pouvoir avoir le droit de continuer à demander des token sans reprendre le login et le mot de passe de l’étudiant (une fois qu’il vous a donné l’autorisation une première fois en se logguant). Toutefois vous pourriez redemander à la place le login/mot de passe et vous ré-authentifier au même droit à chaque fois.

expiration est le timestamp d’expiration de ce couple token/renew_token.