Contrôle d'identification par OpenFlyers pour un logiciel tiers : Différence entre versions
(→PHP code example) |
(→Exemple de code PHP) |
||
(6 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | = | + | =Présentation= |
− | + | Cette page explique comment vérifier qu'un couple identifiant/mot de passe envoyé, par vos propres scripts, est conforme à la base de données d'OpenFlyers. | |
− | + | Le script retourne une valeur indiquant si la connexion, avec des identifiants données, a réussi et son état. Un cookie OpenFlyers est aussi retourné, permettant de gérer une session utilisateur sur votre site, en utilisant le compte utilisateur OpenFlyers de l'utilisateur connecté. | |
− | + | ||
− | ''' | + | =Comment ça marche= |
+ | Si votre plateforme OpenFlyers se situe sur le lien http://openflyers.com/nom-plateforme/, envoyez simplement une requête POST sur le lien http://openflyers.com/nom-plateforme/checkIdent.php avec comme paramètres les variables '''login''' et '''rawPassword'''. | ||
− | == | + | '''Attention:''' Les versions 2 d'OpenFlyers ou plus nécessitent un mot de passe chiffré en MD5 (cf. la ligne $postData commentée ci-dessous, dans le script PHP). |
− | + | ||
+ | ==Valeurs de retour possibles== | ||
+ | Le script retourne un chiffre parmi les suivant : | ||
*0: OK | *0: OK | ||
− | *1: OK | + | *1: OK mais plusieurs profils disponibles. OpenFlyers sélectionne automatiquement le meilleur profil. |
− | *2: | + | *2: Expiré mais autorisé |
− | *3: | + | *3: Expiré mais autorisé, avec un profil expiré |
− | *4: | + | *4: Abonnement expiré, refusé |
− | *5: | + | *5: Mauvais identifiants, refusé |
− | *6: | + | *6: IP ou identifiants bloqués, refusé |
− | *7: | + | *7: Aucun identifiant donné, ils sont demandés |
− | + | Nous vous recommandons de considérer un code de retour entre 0 et 2 comme bon et mauvais entre 3 et 7. | |
− | ''' | + | '''Attention:''' Vous devez filtrer les identifiants de connexion libres (sans droits) puisque pour OpenFlyers, ils correspondent à des accès autorisés !!! |
=JavaScript= | =JavaScript= | ||
− | + | Si vous utilisez votre propre formulaire d'authentification, utilisez la fonction javascript submit_pwd() située dans \javascript\submitPwd.js . | |
− | =PHP | + | =Exemple de code PHP= |
− | + | Voici un exemple de code PHP permettant d'envoyer une requête POST : | |
− | <php>function httpPostRequest($host, $path, $postData) { | + | <php>// PHP 5.6 is required |
− | + | // OpenSSL 1.0.1 is required | |
− | + | function httpPostRequest($host, $path, $postData) { | |
− | + | $result= ""; | |
− | + | ||
− | + | $request = "POST $path HTTP/1.1\n". | |
− | + | "Host: $host\n". | |
− | + | (isset($referer) ? "Referer: $referer\n" : ""). | |
− | + | "Content-type: Application/x-www-form-urlencoded\n". | |
− | + | "Content-length: ".strlen($postData)."\n". | |
− | + | "Connection: close\n\n". | |
− | + | $postData."\n"; | |
− | + | ||
− | + | // Some debug informations: | |
− | + | print("<pre>Request:\n".htmlentities($request)."</pre>"); | |
− | + | ||
− | + | if ($fp = fsockopen($host, 443, $errno, $errstr, 3)) { | |
− | + | // Set cryptology method | |
− | + | // @link http://php.net/manual/en/function.stream-socket-enable-crypto.php | |
− | + | if (!defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) { | |
− | + | die('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT IS REQUIRED'); | |
− | + | } | |
− | + | $cryptoMethod = STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; | |
− | + | // Activate encryption while authenticating | |
− | + | stream_socket_enable_crypto($fp, true, $cryptoMethod); | |
− | // | + | if (fputs($fp, $request)) { |
− | + | while(! feof($fp)) { | |
− | + | $result.= fgets($fp, 128); | |
− | + | } | |
+ | // Deactivate encryption once authenticating done | ||
+ | stream_socket_enable_crypto($fp, false); | ||
+ | fclose($fp); | ||
+ | //print($result); | ||
+ | return $result; | ||
+ | } | ||
+ | } | ||
} | } | ||
− | + | $postData = 'login=jbond&rawPassword='.md5('007'); | |
− | + | $rawContent = httpPostRequest('openflyers.com','https://openflyers.com/plateform-name/checkIdent.php',$postData); | |
− | $rawContent = httpPostRequest('openflyers.com',' | + | |
list($header, $content) = explode("\r\n\r\n", $rawContent, 2); | list($header, $content) = explode("\r\n\r\n", $rawContent, 2); | ||
Ligne 67 : | Ligne 75 : | ||
// the answer is in $realContent</php> | // the answer is in $realContent</php> | ||
− | =Joomla | + | =Plugin d'authentification Joomla= |
− | + | Si vous avez un site Joomla et que vous désirer de permettre aux utilisateurs OpenFlyers de se connecter à votre espace restreint Joomla, vous devriez ajouter ce plugin de manière à avoir une unique base de données de comptes utilisateurs : celle d'OpenFlyers. | |
− | + | ||
− | + | Vous n'avez pas besoin de mettre à jour votre base de données Joomla, ce plugin interroge directement OpenFlyers grâce au script PHP CheckIdent.php. | |
*[[Media:Joomla_authentication_plugin.zip|Joomla plugin for OpenFlyers]] | *[[Media:Joomla_authentication_plugin.zip|Joomla plugin for OpenFlyers]] |
Version actuelle en date du 12 mars 2018 à 12:46
Sommaire
Présentation
Cette page explique comment vérifier qu'un couple identifiant/mot de passe envoyé, par vos propres scripts, est conforme à la base de données d'OpenFlyers.
Le script retourne une valeur indiquant si la connexion, avec des identifiants données, a réussi et son état. Un cookie OpenFlyers est aussi retourné, permettant de gérer une session utilisateur sur votre site, en utilisant le compte utilisateur OpenFlyers de l'utilisateur connecté.
Comment ça marche
Si votre plateforme OpenFlyers se situe sur le lien http://openflyers.com/nom-plateforme/, envoyez simplement une requête POST sur le lien http://openflyers.com/nom-plateforme/checkIdent.php avec comme paramètres les variables login et rawPassword.
Attention: Les versions 2 d'OpenFlyers ou plus nécessitent un mot de passe chiffré en MD5 (cf. la ligne $postData commentée ci-dessous, dans le script PHP).
Valeurs de retour possibles
Le script retourne un chiffre parmi les suivant :
- 0: OK
- 1: OK mais plusieurs profils disponibles. OpenFlyers sélectionne automatiquement le meilleur profil.
- 2: Expiré mais autorisé
- 3: Expiré mais autorisé, avec un profil expiré
- 4: Abonnement expiré, refusé
- 5: Mauvais identifiants, refusé
- 6: IP ou identifiants bloqués, refusé
- 7: Aucun identifiant donné, ils sont demandés
Nous vous recommandons de considérer un code de retour entre 0 et 2 comme bon et mauvais entre 3 et 7.
Attention: Vous devez filtrer les identifiants de connexion libres (sans droits) puisque pour OpenFlyers, ils correspondent à des accès autorisés !!!
JavaScript
Si vous utilisez votre propre formulaire d'authentification, utilisez la fonction javascript submit_pwd() située dans \javascript\submitPwd.js .
Exemple de code PHP
Voici un exemple de code PHP permettant d'envoyer une requête POST :
// PHP 5.6 is required // OpenSSL 1.0.1 is required function httpPostRequest($host, $path, $postData) { $result= ""; $request = "POST $path HTTP/1.1\n". "Host: $host\n". (isset($referer) ? "Referer: $referer\n" : ""). "Content-type: Application/x-www-form-urlencoded\n". "Content-length: ".strlen($postData)."\n". "Connection: close\n\n". $postData."\n"; // Some debug informations: print("<pre>Request:\n".htmlentities($request)."</pre>"); if ($fp = fsockopen($host, 443, $errno, $errstr, 3)) { // Set cryptology method // @link http://php.net/manual/en/function.stream-socket-enable-crypto.php if (!defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) { die('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT IS REQUIRED'); } $cryptoMethod = STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; // Activate encryption while authenticating stream_socket_enable_crypto($fp, true, $cryptoMethod); if (fputs($fp, $request)) { while(! feof($fp)) { $result.= fgets($fp, 128); } // Deactivate encryption once authenticating done stream_socket_enable_crypto($fp, false); fclose($fp); //print($result); return $result; } } } $postData = 'login=jbond&rawPassword='.md5('007'); $rawContent = httpPostRequest('openflyers.com','https://openflyers.com/plateform-name/checkIdent.php',$postData); list($header, $content) = explode("\r\n\r\n", $rawContent, 2); list($byteQty, $realContent, $dummy) = explode("\r\n", $content, 3); // the answer is in $realContent
Plugin d'authentification Joomla
Si vous avez un site Joomla et que vous désirer de permettre aux utilisateurs OpenFlyers de se connecter à votre espace restreint Joomla, vous devriez ajouter ce plugin de manière à avoir une unique base de données de comptes utilisateurs : celle d'OpenFlyers.
Vous n'avez pas besoin de mettre à jour votre base de données Joomla, ce plugin interroge directement OpenFlyers grâce au script PHP CheckIdent.php.