Différences entre versions de « Authentification et sécurité »
Ligne 8 : | Ligne 8 : | ||
==Explications== <!--T:2--> | ==Explications== <!--T:2--> | ||
Pour des raisons évidentes de sécurité, l'API Ikoula exige une authentification. Celle-ci est basée sur un identifiant, un mot de passe et une signature :<br /> | Pour des raisons évidentes de sécurité, l'API Ikoula exige une authentification. Celle-ci est basée sur un identifiant, un mot de passe et une signature :<br /> | ||
− | * L'identifiant est l'adresse mail utilisée pour la connexion à votre compte Ikoula ou à l'extranet. Le nom du paramètre pour le transmettre est toujours | + | * L'identifiant est l'adresse mail utilisée pour la connexion à votre compte Ikoula ou à l'extranet. Le nom du paramètre pour le transmettre est toujours <pre>'''login'''</pre>. |
− | * Le mot de passe quant à lui peut être, soit fourni en texte clair (paramètre | + | * Le mot de passe quant à lui peut être, soit fourni en texte clair (paramètre '''password'''), soit chiffré via une fonction spécifique utilisant une clé publique fournie par Ikoula (paramètre '''crypted_password''') et base64_encode |
* La signature est générée en fonction des paramètres fournis lors de l'appel à l'API (voir la procédure de génération de la signature ==> [[Génération_de_la_signature|Génération de la signature]]) | * La signature est générée en fonction des paramètres fournis lors de l'appel à l'API (voir la procédure de génération de la signature ==> [[Génération_de_la_signature|Génération de la signature]]) | ||
<br /> | <br /> | ||
Ligne 99 : | Ligne 99 : | ||
+ | |||
+ | <comments /> |
Version du 21 septembre 2015 à 16:25
Introduction
Comment s'authentifier à l'API Ikoula et les politiques de sécurité ?
Explications
Pour des raisons évidentes de sécurité, l'API Ikoula exige une authentification. Celle-ci est basée sur un identifiant, un mot de passe et une signature :
- L'identifiant est l'adresse mail utilisée pour la connexion à votre compte Ikoula ou à l'extranet. Le nom du paramètre pour le transmettre est toujours
'''login'''
. - Le mot de passe quant à lui peut être, soit fourni en texte clair (paramètre password), soit chiffré via une fonction spécifique utilisant une clé publique fournie par Ikoula (paramètre crypted_password) et base64_encode
- La signature est générée en fonction des paramètres fournis lors de l'appel à l'API (voir la procédure de génération de la signature ==> Génération de la signature)
Ces paramètres doivent toujours être passés en GET à l'API !
ATTENTION:
Le passage du mot de passe en texte clair est fourni pour faciliter la prise en main de l'API et fait office de debug. Pour vos tests de l'API, vous pouvez par exemple utiliser un utilisateur temporaire dédié à ces tests et vous authentifier avec son mot de passe en clair (Voir le WIKI ci-après pour la création de sous-utilisateur: https://support.ikoula.com/index-1-2-2835.html).
L'utilisation du chiffrement de mot de passe avec la clé publique Ikoula est indispensable dans tout contexte de production ou non-court terme.
Si les appels API sont voués à être utilisés via un script ou un programme, nous vous recommandons la création d'un utilisateur dédié à cet effet plutôt que d'utiliser votre utilisateur extranet classique.
Deux possibilités s'offrent à vous :
- Contacter notre support pour la création d'un utilisateur extranet
- Créer un sous-utilisateur directement depuis la page d'accueil de votre compte extranet (Voir le WIKI ci-après pour la création de sous-utilisateur: https://support.ikoula.com/index-1-2-2835.html) en n'oubliant surtout pas de lui mettre les droits sur les prestations souhaitées.
- La clé publique de chiffrement du mot de passe est disponible à l'adresse suivante
- https://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem
Exemples
Pour cet exemple, le login sera "ikoulasupport".
Pour crypter le mot de passe, voici un exemple de fonction utilisant la clé publique iKoula :
// Chemin local vers la clef publique téléchargée à http://api.ikoula.com/downloads/Ikoula.API.RSAKeyPub.pem
define('API_PUB_KEY_PATH', dirname(__FILE__) . '/Ikoula.API.RSAKeyPub.pem');
// Fonction de cryptage du mot de passe via la clef publique Ikoula
function opensslEncryptPublic($password)
{
// Vérification de la présence de la clef publique
if(file_exists(API_PUB_KEY_PATH))
{
if(!empty($password))
{
// on récupére la clef public
$publicKey = openssl_pkey_get_public('file://'.realpath(API_PUB_KEY_PATH));
// Si il n'y a pas eu d'erreur lors de la récupération de la clef publique on continue
if ($publicKey !== FALSE)
{
// Si chiffrement clef publique OK
if(openssl_public_encrypt($password, $crypted, $publicKey) === TRUE)
{
// Renvoie du passe crypté
return $crypted;
}
else
{
return NULL;
}
}
else
return NULL;
}
else
return NULL;
}
else
{
echo("Erreur la clée public n'est pas présente.\n");
return NULL;
}
}
// Utilisation de la fonction de cryptage
$password_crypt = opensslEncryptPublic("Mot de passe non crypté");
if($password_crypt != NULL)
echo "OK Mot de passe crypté: ".$password_crypt;
else
echo "Erreur lors du cryptage du mot de passe.";
<!--T:4-->
// ==> $password_crypt contient donc le mot de passe crypté
Conclusion
Une fois le mot de passe crypté et la signature cryptée, on peut donc faire l'appel API avec comme paramètres (si on suit l'exemple ci-dessus) :
- login = ikoulasupport
- crypted_password = base64_encode($password_crypt)
- signature = signature générée (voir la procédure de génération de la signature ==> Génération de la signature)
NB : N'oubliez pas d'url_encoder chaque paramètre passé !
Cet article vous a semblé utile ?
Activer l'actualisation automatique des commentaires