API OpenFlyers : Différence entre versions

Aller à : navigation, rechercher
(Valeurs de retour possibles)
(13 révisions intermédiaires par 5 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
=Presentation=
+
=Présentation=
Here is an presentation of how to check if an identification/password couple submitted by your own scripts is correct according to the OpenFlyers database.
+
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.
  
=How it works=
+
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é.
If your OpenFlyers is located at http://openflyers.com/platform-name/ just post at http://openflyers.com/platform-name/checkIdent.php with login and rawPassword variables.
+
  
'''Warning:''' OpenFlyers release 2 or higher required a password hashed with MD5 (see the commented $postData line below in the PHP script).
+
=Comment ça marche=
 +
Si votre plateforme OpenFlyers se situe sur le lien https://openflyers.com/nom-plateforme/, envoyez simplement une requête POST sur le lien https://openflyers.com/nom-plateforme/checkIdent.php avec comme paramètres les variables '''login''' et '''rawPassword'''.
  
==Possible return values==
+
'''Attention:''' Le mot de passe nécessite d'être chiffré en MD5 (cf. la ligne $postData dans le script PHP).
The script display return an answer code which should be one of this value:
+
*0: OK
+
*1: OK but several profile availables. OpenFlyers select automatically the best profile.
+
*2: outdate but authorized
+
*3: outdate but authorized with outdate profile
+
*4: outdate subscription, unauthorized
+
*5: bad Ident, unauthorized
+
*6: Banned (ip or login), unauthorized
+
*7: no Ident -> ask one
+
  
We recommend you to consider 0-2 OK and 3-7 bad
+
==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
 +
*8 : Authentification réussie mais avec des contrats non signés, bloquant tant qu'il reste des contrats à signer. Pour signer les contrats se connecter sur la plateforme OpenFlyers avec le compte bloqué puis signer les contrats à la connexion.
 +
*9 : L'abonnement à la plateforme est périmé, le couple identifiant/mot de passe n'est pas vérifié, accès refusé
  
'''Warning:''' you have to filter public access login (with no right) because for OF, it's a valid access !!!
+
Nous vous recommandons de considérer un code de retour entre 0 et 2 comme bon et mauvais entre 3 et 8.
 +
 
 +
'''Attention:''' Vous devez filtrer les identifiants de connexion libres (sans droits) puisque pour OpenFlyers, ils correspondent à des accès autorisés !!!
  
 
=JavaScript=
 
=JavaScript=
If you are using your own authenticate form, use javascript function submit_pwd() located into \javascript\submitPwd.js
+
Si vous utilisez votre propre formulaire d'authentification, utilisez la fonction javascript submit_pwd() située dans \javascript\submitPwd.js .
  
=PHP code example=
+
=Exemple de code PHP=
Here an example how to send a post request with 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
  $result= "";  
+
// OpenSSL 1.0.1 is required
 
+
function httpPostRequest($host, $path, $postData) {
  $request = "POST $path HTTP/1.1\n".  
+
    $result= "";
  "Host: $host\n".  
+
   
  (isset($referer) ? "Referer: $referer\n" : "").  
+
    $request = "POST $path HTTP/1.1\n".
  "Content-type: Application/x-www-form-urlencoded\n".
+
    "Host: $host\n".
  "Content-length: ".strlen($postData)."\n".  
+
    (isset($referer) ? "Referer: $referer\n" : "").
  "Connection: close\n\n".  
+
    "Content-type: Application/x-www-form-urlencoded\n".
  $postData."\n";  
+
    "Content-length: ".strlen($postData)."\n".
 
+
    "Connection: close\n\n".
  // Some debug informations:
+
    $postData."\n";
  // print("<pre>Request:\n".htmlentities($request)."</pre>");  
+
   
 
+
    // Some debug informations:
  if ($fp = fsockopen($host, 80, $errno, $errstr, 3))
+
    print("<pre>Request:\n".htmlentities($request)."</pre>");
  // for PHP release < 5.3.0, use the following syntax:
+
   
  // if ($fp = fsockopen($host, 80, &$errno, &$errstr, 3))
+
    if ($fp = fsockopen($host, 443, $errno, $errstr, 3)) {
    {
+
        // Set cryptology method
    if (fputs($fp, $request))  
+
        // @link http://php.net/manual/en/function.stream-socket-enable-crypto.php
    {  
+
        if (!defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) {
      while(! feof($fp))  
+
            die('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT IS REQUIRED');
      {  
+
        }
      $result.= fgets($fp, 128);  
+
        $cryptoMethod = STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT;
      }  
+
        // Activate encryption while authenticating
      fclose($fp);  
+
        stream_socket_enable_crypto($fp, true, $cryptoMethod);
//     print($result);
+
        if (fputs($fp, $request)) {
      return $result;  
+
            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'); // for OpenFlyers release 2 or higher
+
$postData   = 'login=jbond&rawPassword='.md5('007');
$postData='login=jbond&rawPassword=007';
+
$rawContent = httpPostRequest('openflyers.com','https://openflyers.com/plateform-name/checkIdent.php',$postData);
$rawContent = httpPostRequest('openflyers.com','http://openflyers.com/platform-name/checkIdent.php',$postData); [^]
+
  
 
list($header, $content) = explode("\r\n\r\n", $rawContent, 2);
 
list($header, $content) = explode("\r\n\r\n", $rawContent, 2);
Ligne 67 : Ligne 77 :
 
// the answer is in $realContent</php>
 
// the answer is in $realContent</php>
  
=Joomla authentification plugin=
+
=Plugin d'authentification Joomla=
If you have a Joomla website and you want that Openflyers users could connect to your Joomla restricted access zone, you may add this plugin to have only one account database: Openflyers one.
+
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.
You don't need to update Joomla user database, this plugin ask directly Openflyers thanks to CheckIdent.php script.
+
 
There are two files depending on your Joomla version:
+
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 du 18 avril 2020 à 11:21

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 https://openflyers.com/nom-plateforme/, envoyez simplement une requête POST sur le lien https://openflyers.com/nom-plateforme/checkIdent.php avec comme paramètres les variables login et rawPassword.

Attention: Le mot de passe nécessite d'être chiffré en MD5 (cf. la ligne $postData 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
  • 8 : Authentification réussie mais avec des contrats non signés, bloquant tant qu'il reste des contrats à signer. Pour signer les contrats se connecter sur la plateforme OpenFlyers avec le compte bloqué puis signer les contrats à la connexion.
  • 9 : L'abonnement à la plateforme est périmé, le couple identifiant/mot de passe n'est pas vérifié, accès refusé

Nous vous recommandons de considérer un code de retour entre 0 et 2 comme bon et mauvais entre 3 et 8.

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.