API OpenFlyers: Difference between revisions

From Documentation de la solution web de gestion OpenFlyers
Jump to navigation Jump to search
imported>Acoppey
imported>Acoppey
Line 78: Line 78:


=OAuth2=
=OAuth2=
OpenFlyers possède un serveur OAuth2 que vous pouvez utiliser.
OpenFlyers possède une API OAuth2 qu'il est possible d'utiliser.
/*écrire plus en détails les avantages que ça apporte par rapport à l'ancien système, les cas d'utilisation, et*/
/*écrire plus en détails les avantages que ça apporte par rapport à l'ancien système, les cas d'utilisation, et*/


==Préparation==
==Préparation==
Avant de pouvoir utiliser ce serveur OAuth2 et son API, il faut que vous enregistrez un client OAuth2 auprès d'OpenFlyers. Pour ceci, il faut suivre les étapes suivantes :
Pour utiliser l'API OAuth2, il faut enregistrer un client OAuth2 auprès d'OpenFlyers. Pour ceci, il faut suivre les étapes suivantes :


*Créer un nouveau profil. Ce profil permet de gérer les droits du client OAuth2.
*Créer un [[Gestion-des-profils#Ajouter-un-profil|nouveau profil]]. Ce profil permet de gérer les droits du client OAuth2.
**Naviguer vers l'onglet "Admin".
**Choisir un nom explicite, par exemple "Client oauth rapports".
**Sélectionner dans le bandeau la section "Utilisateurs">"Profils".
**Cliquer sur le bouton "AJOUTER UN PROFIL" en bas de la page.
**Entrer un nom pour le profil, par exemple "Client oauth rapports", puis cliquer sur "Enregister".


*Sélectionner les permissions à assigner à ce profil. Ces permissions limiteront les données auxquelles le client OAuth2 aura accès.
*Sélectionner les permissions à assigner à ce profil. Ces permissions limitent les données auxquelles le client OAuth2 a accès.
**A ce jour, les permissions supportées par l'API sont :
***Récupérer des rapports.
***Obtenir des informations sur le profil de l'utilisateur.
**Naviguer vers l'onglet "Gestion".
**Sélectionner dans le bandeau la section "Rapports">"BIBLIOTHEQUE">"Accès".
**Sélectionner les rapports accessibles par le profil précédemment créé.
**Sélectionner les rapports accessibles par le profil précédemment créé.


*Créer un nouvel utilisateur. Cet utilisateur est virtuel et représente le serveur sur lequel fonctionnera le client OAuth2.
*Créer un nouvel utilisateur. Cet utilisateur est virtuel et représente le serveur sur lequel fonctionne le client OAuth2.
**Naviguer vers l'onglet "Gestion".
**Des identifiant et nom explicites sont recommandés (exemple : "serv1_oauth_client")
**Sélectionner dans le bandeau la section "Utilisateurs">"UTILISATEURS">"Actifs".
 
**Cliquer sur le bouton "Ajouter un utilisateur" en bas à droite de la page.
**Remplir les champs obligatoires (identifiant, mot de passe, nom de l'utilisateur) et assigner à l'utilisateur le profil précedemment créé. Des identifiant et nom explicites sont recommandés (exemple : "serv1_oauth_client")
**Cliquer sur le bouton "Enregistrer" à droite au-dessus ou en-dessous du formulaire.


/*Work In Progress : front-end non implémenté*/
/*Work In Progress : front-end non implémenté*/
*Créer un nouveau client OAuth2.
*Créer un nouveau client OAuth2.
**Choisir un nom pour le client. Il est recommandé de choisir un nom reconnaissable par vos utilisateur comme étant votre organisation.
**Il est recommandé de choisir un nom reconnaissable par les utilisateurs comme étant l'organisation utilisant l'API OAuth2.
**Sélectionner le mécanisme d'autorisation utilisé par le client.
**Sélectionner le mécanisme d'autorisation utilisé par le client :
***authorization_code : mécanisme adapté à un client s'exécutant sur serveur web. Utilisateur humain nécessaire. L'utilisateur humain est considéré comme étant propriétaire des données accédées.
***Pour utiliser OAuth2 comme solution SSO ou accéder à des données de l'utilisateur, choisir ''authorization_code''.
***client_credentials : mécanisme adapté à l'automatisation. Pas d'utilisateur humain nécessaire. Le propriétaire du client est considéré comme étant propriétaire des données accédées.
***Pour utiliser OAuth2 sans utilisateur ou dans un contexte d'automatisme, choisir ''client_credentials''.
**Sélectionner l'utilisateur propriétaire du client. Les permissions de l'utilisateur définissent les permissions maximales pouvant être accordées au client.
;Un couple ID/passphrase est généré. La passphrase n'est communiquée qu'une seule fois. Elle doit être sauvegardée en lieu sûr et rester confidentielle.
**Choisir un URL de redirection : remplir avec l'URL vers lequel l'utilisateur sera redirigé après qu'il ait accepté ou refusé une demande d'autorisation.
**Cliquer sur le bouton "Enregistrer".
**;Un couple ID/passphrase sera généré. La passphrase ne vous sera communiquée qu'une seule fois. Sauvegardez-là en lieu sûr, elle doit rester confidentielle.


==code==
==code==

Revision as of 16:48, 16 March 2021

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>// 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("

Request:\n".htmlentities($request)."

");

   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</php>

OAuth2

OpenFlyers possède une API OAuth2 qu'il est possible d'utiliser. /*écrire plus en détails les avantages que ça apporte par rapport à l'ancien système, les cas d'utilisation, et*/

Préparation

Pour utiliser l'API OAuth2, il faut enregistrer un client OAuth2 auprès d'OpenFlyers. Pour ceci, il faut suivre les étapes suivantes :

  • Créer un nouveau profil. Ce profil permet de gérer les droits du client OAuth2.
    • Choisir un nom explicite, par exemple "Client oauth rapports".
  • Sélectionner les permissions à assigner à ce profil. Ces permissions limitent les données auxquelles le client OAuth2 a accès.
    • Sélectionner les rapports accessibles par le profil précédemment créé.
  • Créer un nouvel utilisateur. Cet utilisateur est virtuel et représente le serveur sur lequel fonctionne le client OAuth2.
    • Des identifiant et nom explicites sont recommandés (exemple : "serv1_oauth_client")


/*Work In Progress : front-end non implémenté*/

  • Créer un nouveau client OAuth2.
    • Il est recommandé de choisir un nom reconnaissable par les utilisateurs comme étant l'organisation utilisant l'API OAuth2.
    • Sélectionner le mécanisme d'autorisation utilisé par le client :
      • Pour utiliser OAuth2 comme solution SSO ou accéder à des données de l'utilisateur, choisir authorization_code.
      • Pour utiliser OAuth2 sans utilisateur ou dans un contexte d'automatisme, choisir client_credentials.
Un couple ID/passphrase est généré. La passphrase n'est communiquée qu'une seule fois. Elle doit être sauvegardée en lieu sûr et rester confidentielle.

code

authorization code

client credentials

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.