API OpenFlyers : Différence entre versions
(→Utiliser l'API) |
|||
(41 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
=Présentation= | =Présentation= | ||
− | L'objet de cette page est de décrire | + | L'objet de cette page est de décrire l'API OpenFlyers. |
− | + | ||
− | + | ||
− | + | ||
− | + | '''Attention : l'ancien module checkIdent.php ne doit plus être utilisé. Il est prévu être désactivé au 01/03/2022'''. | |
− | + | ||
− | + | OpenFlyers possède une API basée sur [[Wikipedia-en:OAuth#OAuth_2.0|OAuth2]] qui permet à des serveurs extérieurs, dûment [[#Enregistrer-un-client|enregistrés]], de mettre en œuvre un processus d'[[Wikipedia-fr:Authentification_unique|authentification unique (SSO)]] et/ou de récupération des résultats des requêtes SQL de la [[Bibliothèque-des-rapports|bibliothèque des rapports]] ou des rapports personnalisés sous la forme de fichiers CSV. | |
− | + | Un client de démonstration est disponible pour comprendre les mécanismes décrits ci-dessous. | |
− | + | ||
− | + | Son utilisation est décrite dans le chapitre [[#Client-de-démonstration|Client de démonstration]] de cette page. | |
− | + | Le client de démonstration est lui-même accessible à cette adresse : https://openflyers.com/oauth2-demo/index.php | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | Le code source du client de démonstration est mis à disposition par OpenFlyers à cette adresse : https://openflyers.com/oauth2-demo/oauth2-demo-src.zip | |
− | + | Son utilisation est décrite dans le chapitre [[#Configurer-le-client-à-partir-du-code-source|Configurer le client à partir du code source]]. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
OAuth2 propose plusieurs mécanismes pour permettre l'authentification. Un mécanisme d'authentification détermine la séquence exacte des étapes impliquées dans le processus d'authentification d'OAuth2. OpenFlyers met à disposition deux mécanismes d'authentification : | OAuth2 propose plusieurs mécanismes pour permettre l'authentification. Un mécanisme d'authentification détermine la séquence exacte des étapes impliquées dans le processus d'authentification d'OAuth2. OpenFlyers met à disposition deux mécanismes d'authentification : | ||
Ligne 101 : | Ligne 31 : | ||
OAuth2 dispose de ''scopes''. Un scope est un privilège définit de manière explicite permettant l'accès à une ressource protégée. OpenFlyers met à disposition une [[#Liste des scopes disponibles|liste de scopes]] utilisables à travers l'API. | OAuth2 dispose de ''scopes''. Un scope est un privilège définit de manière explicite permettant l'accès à une ressource protégée. OpenFlyers met à disposition une [[#Liste des scopes disponibles|liste de scopes]] utilisables à travers l'API. | ||
− | + | Deux options ont été ajoutées à l'API OpenFlyers. La première correspond à [[#Authentification-TLS-Mutuelle-(mTLS)|mTLS]]. [[#Authentification-TLS-Mutuelle-(mTLS)|mTLS]] permet, en plus d'authentifier le serveur avec un certificat, d'authentifier le client avec un certificat TLS. Cette fonctionnalité permet d'éviter les usurpations d'identité. La seconde correspond à [[#HTTP-Signature|HTTP-Signature]]. [[#HTTP-Signature|HTTP-Signature]] permet de signer les en-têtes et le corps (lorsqu'il y en a un) des messages échangés afin d'en garantir leur intégrité. | |
− | + | ||
+ | =Préparation= | ||
+ | ==Enregistrer un client== | ||
Pour utiliser l'API OAuth2, il faut enregistrer un client OAuth2 auprès d'OpenFlyers. Pour ceci, suivre les étapes suivantes : | Pour utiliser l'API OAuth2, il faut enregistrer un client OAuth2 auprès d'OpenFlyers. Pour ceci, suivre les étapes suivantes : | ||
Ligne 121 : | Ligne 53 : | ||
*Dans l'onglet '''Généralités''', cocher la case relative à la colonne '''Connexion depuis l'extérieur (OAuth2)''' pour le profil souhaité. | *Dans l'onglet '''Généralités''', cocher la case relative à la colonne '''Connexion depuis l'extérieur (OAuth2)''' pour le profil souhaité. | ||
− | Une fois les opérations précédentes exécutées, | + | [[Fichier:Oauth2 manage.png]] |
− | + | ||
− | + | Une fois les opérations précédentes exécutées, créer un nouveau client OAuth2 à partir du menu '''Imports''' dans le panneau d'administration. | |
− | + | ||
− | + | [[Fichier:Oauth2 client creation.png]] | |
− | + | ||
− | + | *Choisir un nom pour le client. | |
− | + | *Sélectionner le mécanisme d'autorisation utilisé par le client : | |
− | + | **Pour utiliser OAuth2 comme solution SSO ou accéder à des données utilisateurs, choisir ''Authorization Code''. Cette méthode peut être couplée avec le mécanisme de mémorisation de connexion (''Refresh Token''). | |
− | + | **Pour utiliser OAuth2 dans un contexte d'automatisme, choisir ''Client Credentials''. | |
− | + | *Saisir l'URI de redirection vers le client pour le mécanisme ''Authorization Code''. | |
+ | *Sélectionner l'utilisateur virtuel créé précédemment pour le mécanisme ''Client Credentials''. | ||
+ | *[[#Génération-des-certificats|Générer deux CSR]] afin d'obtenir deux certificats signés et les saisir : | ||
+ | **Le premier est utilisé pour l'authentification mutuelle avec mTLS. | ||
+ | **Le second est utilisé pour la signature des en-têtes HTTP. | ||
;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. | ;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. | ||
+ | |||
+ | [[Fichier:Oauth2 client created.png]] | ||
'''À noter''' : les certificats du CA d'OpenFlyers et de signature HTTP du serveur sont nécessaires. Ils sont téléchargeables depuis l'interface de configuration des clients OAuth2. | '''À noter''' : les certificats du CA d'OpenFlyers et de signature HTTP du serveur sont nécessaires. Ils sont téléchargeables depuis l'interface de configuration des clients OAuth2. | ||
Ligne 144 : | Ligne 82 : | ||
** Choisir l'emplacement de stockage (utilisateur ou ordinateur) et cliquer sur '''Suivant''' puis '''Suivant''' et enfin '''Terminer''' | ** Choisir l'emplacement de stockage (utilisateur ou ordinateur) et cliquer sur '''Suivant''' puis '''Suivant''' et enfin '''Terminer''' | ||
− | + | ==Générer des certificats== | |
L'API OAuth2 implémente [https://tools.ietf.org/html/draft-cavage-http-signatures-10 HTTP Signature] et l'[[Wikipedia-en:Mutual_authentication#mTLS|authentification TLS mutuelle]]. Ces mécanismes utilisent chacun une paire certificat/clé privée différente. | L'API OAuth2 implémente [https://tools.ietf.org/html/draft-cavage-http-signatures-10 HTTP Signature] et l'[[Wikipedia-en:Mutual_authentication#mTLS|authentification TLS mutuelle]]. Ces mécanismes utilisent chacun une paire certificat/clé privée différente. | ||
Ligne 200 : | Ligne 138 : | ||
Une fois ces CSR obtenus : | Une fois ces CSR obtenus : | ||
− | *Les renseigner dans les champs prévus à cet effet lors de la [[# | + | *Les renseigner dans les champs prévus à cet effet lors de la [[#Enregistrer-un-client|création d'un client]] et télécharger les certificats signés depuis l'interface une fois le client créé. |
*Garder la clé privée confidentielle. Une fuite poserait un risque de sécurité. Elle va de paire avec le certificat distribué par l'autorité de certification OpenFlyers. | *Garder la clé privée confidentielle. Une fuite poserait un risque de sécurité. Elle va de paire avec le certificat distribué par l'autorité de certification OpenFlyers. | ||
− | + | =Authentification TLS Mutuelle (mTLS)= | |
En général dans une communication TLS, seul le serveur a l'obligation de fournir un certificat. Il est également possible pour le client de fournir un certificat. Ce principe s'appelle l'authentification mutuelle et est mise en place avec Mutual TLS (ou [[Wikipedia-en:Mutual_authentication#mTLS|mTLS]]). | En général dans une communication TLS, seul le serveur a l'obligation de fournir un certificat. Il est également possible pour le client de fournir un certificat. Ce principe s'appelle l'authentification mutuelle et est mise en place avec Mutual TLS (ou [[Wikipedia-en:Mutual_authentication#mTLS|mTLS]]). | ||
Ligne 220 : | Ligne 158 : | ||
'''À noter''' : le certificat du CA d'OpenFlyers est nécessaire pour assurer la validité des certificats utilisés. | '''À noter''' : le certificat du CA d'OpenFlyers est nécessaire pour assurer la validité des certificats utilisés. | ||
− | + | =HTTP Signature= | |
HTTP Signature utilise le principe de la signature numérique pour garantir l'authenticité et l'intégrité du message HTTP. | HTTP Signature utilise le principe de la signature numérique pour garantir l'authenticité et l'intégrité du message HTTP. | ||
Ligne 230 : | Ligne 168 : | ||
*Digest : contient le corps du message haché. | *Digest : contient le corps du message haché. | ||
− | + | ==Digest== | |
Le ''digest'' est calculé comme ceci : <code>digest = base64encode(sha256(corps du message))</code> | Le ''digest'' est calculé comme ceci : <code>digest = base64encode(sha256(corps du message))</code> | ||
Ligne 240 : | Ligne 178 : | ||
<php>$digestHeader = 'Digest: SHA-256=' . base64_encode(hash('sha256', $postData, true));</php> | <php>$digestHeader = 'Digest: SHA-256=' . base64_encode(hash('sha256', $postData, true));</php> | ||
− | + | ==Signature== | |
L'en-tête HTTP de signature est structuré de la manière suivante : <code>Signature: keyId="<keyId>",algorithm="<algo>",headers="<signed_headers>",signature="<signature>"</code> | L'en-tête HTTP de signature est structuré de la manière suivante : <code>Signature: keyId="<keyId>",algorithm="<algo>",headers="<signed_headers>",signature="<signature>"</code> | ||
Ligne 289 : | Ligne 227 : | ||
'''À noter''' : les en-têtes sont à signer côté client avec le certificat de signature signé par le CA d'OpenFlyers et dédié au client ainsi que la clé privée associée. Le certificat de signature dédié au client est téléchargeable depuis l'interface de gestion des clients OAuth2. Les en-têtes de la réponse du serveur quant à elles doivent être vérifiées avec le certificat de signature HTTP du serveur, téléchargeable aussi depuis l'interface de configuration des clients OAuth2. | '''À noter''' : les en-têtes sont à signer côté client avec le certificat de signature signé par le CA d'OpenFlyers et dédié au client ainsi que la clé privée associée. Le certificat de signature dédié au client est téléchargeable depuis l'interface de gestion des clients OAuth2. Les en-têtes de la réponse du serveur quant à elles doivent être vérifiées avec le certificat de signature HTTP du serveur, téléchargeable aussi depuis l'interface de configuration des clients OAuth2. | ||
− | + | =Client OAuth2= | |
Une fois le client OAuth2 configuré sur OpenFlyers, il faut l'utiliser avec un client créé au préalable pour communiquer avec le serveur d'autorisation et l'API. | Une fois le client OAuth2 configuré sur OpenFlyers, il faut l'utiliser avec un client créé au préalable pour communiquer avec le serveur d'autorisation et l'API. | ||
Plusieurs [https://oauth.net/code/ bibliothèques] simplifiant la création d'un client sont disponibles. | Plusieurs [https://oauth.net/code/ bibliothèques] simplifiant la création d'un client sont disponibles. | ||
− | Des scripts client basiques écrits en php sont aussi fournis pour les mécanismes [[ | + | Des scripts client basiques écrits en php sont aussi fournis pour les mécanismes [[#Script-client-:-authorization-code|''authorization_code'']] et [[#Script-client-:-client-credentials|''client_credentials'']] |
− | + | ==Authorization Code== | |
Ce flux OAuth2 se déroule en plusieurs étapes : | Ce flux OAuth2 se déroule en plusieurs étapes : | ||
*Le client redirige le navigateur de l'utilisateur vers l'URL d'autorisation. | *Le client redirige le navigateur de l'utilisateur vers l'URL d'autorisation. | ||
Ligne 343 : | Ligne 281 : | ||
− | + | ===Générer les codes pour PKCE=== | |
Pour faire fonctionner le client OAuth2, il faut générer deux codes pour l'extension PKCE : | Pour faire fonctionner le client OAuth2, il faut générer deux codes pour l'extension PKCE : | ||
*Un ''code_verifier'' échangé pendant la demande de jeton d'accès. | *Un ''code_verifier'' échangé pendant la demande de jeton d'accès. | ||
Ligne 373 : | Ligne 311 : | ||
− | + | ===Demande d'autorisation=== | |
− | Pour initier la demande d'autorisation, rediriger le navigateur de l'utilisateur vers l'URL : <code>GET https://openflyers.com/nom-de-plateforme/oauth/authorize.php</code>. | + | Pour initier la demande d'autorisation, rediriger le navigateur de l'utilisateur vers l'URL : <code>GET https://openflyers.com/nom-de-plateforme/oauth/authorize.php</code>. Remplacer <code>nom-de-plateforme</code> par le nom de la plateforme utilisée. |
Envoyer également les paramètres suivants : | Envoyer également les paramètres suivants : | ||
Ligne 395 : | Ligne 333 : | ||
|} | |} | ||
− | + | ===Demande de jeton d'accès=== | |
Après avoir répondu à la demande, l'utilisateur est redirigé vers l'URI fourni pendant l'enregistrement du client. Si la demande est acceptée, un code temporaire : ''code'' est fourni, ainsi que le paramètre ''state'' fourni pendant la demande avec la même valeur. Si la demande est refusée, un code d'erreur est renvoyé. | Après avoir répondu à la demande, l'utilisateur est redirigé vers l'URI fourni pendant l'enregistrement du client. Si la demande est acceptée, un code temporaire : ''code'' est fourni, ainsi que le paramètre ''state'' fourni pendant la demande avec la même valeur. Si la demande est refusée, un code d'erreur est renvoyé. | ||
;Si le paramètre ''state'' a une valeur différente de celle envoyée avec la demande, c'est peut-être une tentative d'attaque et il faut refuser la réponse. | ;Si le paramètre ''state'' a une valeur différente de celle envoyée avec la demande, c'est peut-être une tentative d'attaque et il faut refuser la réponse. | ||
− | Echanger ce ''code'' contre un jeton d'accès via l'URL : <code>POST https://openflyers.com/nom-de-plateforme/oauth/access_token.php</code> | + | Echanger ce ''code'' contre un jeton d'accès via l'URL : <code>POST https://openflyers.com/nom-de-plateforme/oauth/access_token.php</code>. Remplacer <code>nom-de-plateforme</code> par le nom de la plateforme utilisée. |
Les paramètres suivants sont également nécessaires : | Les paramètres suivants sont également nécessaires : | ||
Ligne 426 : | Ligne 364 : | ||
}</javascript> | }</javascript> | ||
− | + | ===Script client : Authorization Code=== | |
Voici un exemple simple de client OAuth2 pour le mécanisme d'authentification par code d'autorisation (Authorization Code). | Voici un exemple simple de client OAuth2 pour le mécanisme d'authentification par code d'autorisation (Authorization Code). | ||
Ligne 940 : | Ligne 878 : | ||
;Ce script a été conçu pour montrer le fonctionnement du mécanisme afin de tester l'implémentation d'un serveur et n'a pas été testé extensivement. Il est conseillé d'utiliser une solution adaptée à un environnement de production. | ;Ce script a été conçu pour montrer le fonctionnement du mécanisme afin de tester l'implémentation d'un serveur et n'a pas été testé extensivement. Il est conseillé d'utiliser une solution adaptée à un environnement de production. | ||
− | + | ==Client Credentials== | |
Ce mécanisme d'autorisation est adapté pour l'automatisation. Il fonctionne de la manière suivante : | Ce mécanisme d'autorisation est adapté pour l'automatisation. Il fonctionne de la manière suivante : | ||
*Le client effectue la demande de jeton d'accès au serveur d'autorisation en fournissant ses identifiants. | *Le client effectue la demande de jeton d'accès au serveur d'autorisation en fournissant ses identifiants. | ||
Ligne 972 : | Ligne 910 : | ||
− | + | ===Demande de jeton d'accès=== | |
− | Pour obtenir un jeton d'accès, il faut effectuer la requête suivante : <code>POST https://openflyers.com/nom-de-plateforme/oauth/access_token.php</code> | + | Pour obtenir un jeton d'accès, il faut effectuer la requête suivante : <code>POST https://openflyers.com/nom-de-plateforme/oauth/access_token.php</code>. Remplacer <code>nom-de-plateforme</code> par le nom de la plateforme utilisée. |
Les paramètres suivants sont nécessaires : | Les paramètres suivants sont nécessaires : | ||
Ligne 997 : | Ligne 935 : | ||
}</javascript> | }</javascript> | ||
− | + | ===Script client : Client Credentials=== | |
Voici un exemple simple d'un client OAuth2 pour le mécanisme d'authentification par les identifiants client (Client Credentials). | Voici un exemple simple d'un client OAuth2 pour le mécanisme d'authentification par les identifiants client (Client Credentials). | ||
Ligne 1 005 : | Ligne 943 : | ||
"client_secret": "", | "client_secret": "", | ||
"token_uri": "https://openflyers.com/nom-de-plateforme/oauth/access_token.php", | "token_uri": "https://openflyers.com/nom-de-plateforme/oauth/access_token.php", | ||
− | "resource_uri": "https://openflyers.com/nom-de-plateforme/oauth/ | + | "resource_uri": "https://openflyers.com/nom-de-plateforme/oauth/resources.php", |
"auth_cert": "/path/to/client/auth_cert.crt", | "auth_cert": "/path/to/client/auth_cert.crt", | ||
"auth_key": "/path/to/client/auth.key", | "auth_key": "/path/to/client/auth.key", | ||
Ligne 1 411 : | Ligne 1 349 : | ||
;Ce script a été conçu pour montrer le fonctionnement du mécanisme et tester l'implémentation d'un serveur, il n'a pas été testé extensivement. Il est conseillé d'utiliser une solution adaptée à un environnement de production. | ;Ce script a été conçu pour montrer le fonctionnement du mécanisme et tester l'implémentation d'un serveur, il n'a pas été testé extensivement. Il est conseillé d'utiliser une solution adaptée à un environnement de production. | ||
− | + | ==Refresh Token== | |
Refresh Token (ou jeton de rafraîchissement en français) est un mécanisme d'autorisation particulier. Il ne peut fonctionner en tant que tel, il fonctionne de pair avec [[#Authorization-Code|Authorization Code]]. Lorsqu'un jeton d'accès arrive est arrivé en fin de vie, si le client y est autorisé, il peut faire une demande de renouvellement de son jeton d'accès auprès du serveur d'autorisation en présentant son jeton de rafraîchissement. Le serveur d'autorisation vérifie la validité et génère un autre jeton d'accès qu'il transmet au client, sans que l'utilisateur final n'aît à se connecter de nouveau. | Refresh Token (ou jeton de rafraîchissement en français) est un mécanisme d'autorisation particulier. Il ne peut fonctionner en tant que tel, il fonctionne de pair avec [[#Authorization-Code|Authorization Code]]. Lorsqu'un jeton d'accès arrive est arrivé en fin de vie, si le client y est autorisé, il peut faire une demande de renouvellement de son jeton d'accès auprès du serveur d'autorisation en présentant son jeton de rafraîchissement. Le serveur d'autorisation vérifie la validité et génère un autre jeton d'accès qu'il transmet au client, sans que l'utilisateur final n'aît à se connecter de nouveau. | ||
Ligne 1 442 : | Ligne 1 380 : | ||
| | | | | | | | ||
− | + | ===Demande de renouvellement d'un jeton=== | |
− | Pour obtenir un renouvellement de jeton d'accès, il faut effectuer la requête suivante : <code>POST https://openflyers.com/nom-de-plateforme/oauth/access_token.php</code> | + | Pour obtenir un renouvellement de jeton d'accès, il faut effectuer la requête suivante : <code>POST https://openflyers.com/nom-de-plateforme/oauth/access_token.php</code>. Remplacer <code>nom-de-plateforme</code> par le nom de la plateforme utilisée. |
Les paramètres suivants sont nécessaires : | Les paramètres suivants sont nécessaires : | ||
Ligne 1 466 : | Ligne 1 404 : | ||
}</javascript> | }</javascript> | ||
− | + | ==Liste des scopes disponibles== | |
Un scope sur OAuth2 correspond à un droit d'accès sur une ressource particulière. Chaque scope est unique et indique de manière explicite le privilège qu'il donne. Il n'y a aucune restriction d'utilisation des scopes par rapport aux mécanismes. Chaque scope peut être utilisé avec n'importe quel mécanisme. Il n'y a que des recommandations vis à vis de leur utilisation. OpenFlyers définit une liste de scopes dédiée aux ressources accessibles par les clients. Ces scopes sont les suivants : | Un scope sur OAuth2 correspond à un droit d'accès sur une ressource particulière. Chaque scope est unique et indique de manière explicite le privilège qu'il donne. Il n'y a aucune restriction d'utilisation des scopes par rapport aux mécanismes. Chaque scope peut être utilisé avec n'importe quel mécanisme. Il n'y a que des recommandations vis à vis de leur utilisation. OpenFlyers définit une liste de scopes dédiée aux ressources accessibles par les clients. Ces scopes sont les suivants : | ||
{| class="wikitable" | {| class="wikitable" | ||
Ligne 1 475 : | Ligne 1 413 : | ||
|genericreports.readonly||Accéder aux rapports génériques autorisés pour le client en lecture seule. Ce scope est recommandé pour '''Client Credentials'''. | |genericreports.readonly||Accéder aux rapports génériques autorisés pour le client en lecture seule. Ce scope est recommandé pour '''Client Credentials'''. | ||
|- | |- | ||
− | |reports.readonly||Accéder aux rapports personnalisés autorisés pour le client en lecture seule | + | |reports.readonly||Accéder aux rapports personnalisés autorisés pour le client en lecture seule. Ce scope est recommandé pour '''Client Credentials'''. |
|} | |} | ||
− | + | ==Utiliser l'API== | |
− | Une fois un jeton d'accès obtenu, les données sont accessibles par une requête POST exécutée vers l'URL : <code>https://openflyers.com/nom-de-plateforme/oauth/resources.php</code>. La requête POST doit respecter une structure particulière. Cette structure diffère en fonction du type de ressource souhaité et chaque ressource ne peut être accédée qu'[[#Liste-des-scopes-disponibles|avec le scope qui lui est associé]]. Le jeton d'accès doit être renseigné dans l'en-tête HTTP ''Authorization'' en y indiquant la valeur complète du jeton d'accès reçu précédé du type de jeton reçu : <code>Authorization: <token_type> <access_token></code>. | + | Une fois un jeton d'accès obtenu, les données sont accessibles par une requête POST exécutée vers l'URL : <code>https://openflyers.com/nom-de-plateforme/oauth/resources.php</code>. Remplacer <code>nom-de-plateforme</code> par le nom de la plateforme utilisée. La requête POST doit respecter une structure particulière. Cette structure diffère en fonction du type de ressource souhaité et chaque ressource ne peut être accédée qu'[[#Liste-des-scopes-disponibles|avec le scope qui lui est associé]]. Le jeton d'accès doit être renseigné dans l'en-tête HTTP ''Authorization'' en y indiquant la valeur complète du jeton d'accès reçu précédé du type de jeton reçu : <code>Authorization: <token_type> <access_token></code>. |
− | + | ===Récupérer les informations de l'utilisateur connecté=== | |
Ce type de ressource est nommé '''user_information'''. Cette ressource n'est accessible qu'avec le scope '''default.login'''. Cette ressource permet la récupération des informations de l'utilisateur connecté, en d'autre termes, l'utilisateur connecté lors de l'étape d'autorisation et correspondant à celui ayant émis la demande de jeton d'accès. À l'heure actuelle, seul l'identifiant de l'utilisateur connecté est retourné. La requête POST est construite de la manière suivante : | Ce type de ressource est nommé '''user_information'''. Cette ressource n'est accessible qu'avec le scope '''default.login'''. Cette ressource permet la récupération des informations de l'utilisateur connecté, en d'autre termes, l'utilisateur connecté lors de l'étape d'autorisation et correspondant à celui ayant émis la demande de jeton d'accès. À l'heure actuelle, seul l'identifiant de l'utilisateur connecté est retourné. La requête POST est construite de la manière suivante : | ||
Ligne 1 513 : | Ligne 1 451 : | ||
La réponse est retournée dans un conteneur JSON. | La réponse est retournée dans un conteneur JSON. | ||
− | + | ===Récupérer les rapports génériques=== | |
Ce type de ressource est nommé '''generic_report'''. Cette ressource n'est accessible qu'avec le scope '''genericreports.readonly'''. Cette ressource permet la récupération des rapports génériques au format CSV autorisés pour le profil de l'utilisateur associé au client OAuth2 enregistré. La requête POST est construite de la manière suivante : | Ce type de ressource est nommé '''generic_report'''. Cette ressource n'est accessible qu'avec le scope '''genericreports.readonly'''. Cette ressource permet la récupération des rapports génériques au format CSV autorisés pour le profil de l'utilisateur associé au client OAuth2 enregistré. La requête POST est construite de la manière suivante : | ||
Ligne 1 553 : | Ligne 1 491 : | ||
La réponse est un fichier CSV retourné dans un conteneur JSON. | La réponse est un fichier CSV retourné dans un conteneur JSON. | ||
− | + | ===Récupérer les rapports personnalisés=== | |
Ce type de ressource est nommé '''report'''. Cette ressource n'est accessible qu'avec le scope '''reports.readonly'''. Cette ressource permet la récupération des rapports personnalisés au format CSV autorisés pour le profil de l'utilisateur associé au client OAuth2 enregistré. La requête POST est construite de la manière suivante : | Ce type de ressource est nommé '''report'''. Cette ressource n'est accessible qu'avec le scope '''reports.readonly'''. Cette ressource permet la récupération des rapports personnalisés au format CSV autorisés pour le profil de l'utilisateur associé au client OAuth2 enregistré. La requête POST est construite de la manière suivante : | ||
Ligne 1 593 : | Ligne 1 531 : | ||
La réponse est un fichier CSV retourné dans un conteneur JSON. | La réponse est un fichier CSV retourné dans un conteneur JSON. | ||
− | = | + | =Client de démonstration= |
− | + | Un client de démonstration est disponible pour le logiciel OpenFlyers à cette adresse : https://openflyers.com/oauth2-demo/index.php | |
+ | |||
+ | ==Utiliser le client== | ||
+ | Le client de démonstration se présente de la manière suivante. | ||
+ | |||
+ | [[Fichier:Oauth2-client-demo.png]] | ||
+ | |||
+ | La démonstration est composée de deux colonnes. La première, nommée '''Authorization Code''' correspond [[#Authorization Code|au mécanisme d'autorisation du même nom]]. Elle dispose d'un bouton permettant de se connecter ainsi que d'une section indiquant les informations relatives à l'état de la connexion. La seconde colonne, nommée '''Client Credentials''' correspond elle aussi [[#Client Credentials|au mécanisme d'autorisation du même nom]]. Comme pour la première colonne, les éléments qui y sont présentés sont identiques. La différence étant que le bouton de connexion n'a pas le même effet étant donné que ces deux mécanismes sont différents. Chaque mécanisme est indépendant et il est possible de se connecter à un des deux mécanismes sans se connecter à l'autre ou se connecter aux deux en même temps. | ||
+ | |||
+ | Pour le mécanisme '''Authorization Code''', le bouton de connexion redirige le navigateur vers la page de connexion du logiciel OpenFlyers. Renseigner les identifiants de l'administrateur pour s'y connecter. | ||
+ | * Nom d'utilisateur : '''admini'''. | ||
+ | * Mot de passe : '''azerty'''. | ||
+ | |||
+ | Une fois les informations saisies, la page suivante est affichée. | ||
+ | |||
+ | [[Fichier:Oauth authorize demo.png]] | ||
+ | |||
+ | Cliquer sur le bouton '''Autoriser l'application''' pour autoriser la connexion. Une fois le bouton cliqué, le navigateur est redirigé vers la p |