MyReport utilise un composant externe pour se connecter à diverses API : CData ADO.NET Provider for REST
Une connexion REST permet de préparer la connexion à un WebService de type REST pour son utilisation dans un modèle.
Note
Liste des connexions validées avec MyReport BE : https://portail.myreport.fr/knowledge/article/554
Important
Il est important de bien lire la documentation de l'API du WebService pour comprendre comment s'y connecter.
Il est fortement conseillé de valider la connexion avec un outil externe comme postman ou insomnia avant de tenter la connexion dans MyReport Data.
La ConnexionString permet à MyReport Data de savoir comment se connecter à une API, et comment récupérer les données.
Elle est constituée d'un ensemble de clé/valeurs, permettant de définir
- L'URL d'accès aux données
- Une méthode d'authentification
- La manière de transformer les données reçues pour les rendre compatible avec un système tabulaire et relationnel (SQL)
- La sécurisation de la connexion (SSL, SSH, Proxy, Firewall)
- Une gestion de cache
Divers propriétés comme :
- un TimeOut de connexion (différent de celui natif de MyReport),
- La génération d'un format d'accès personnalisable via un fichier RSD (cas avancé)
- ...
En-têtes de la connexion
- Pour les utiliser, il faut ajouter un paramètre supplémentaire de Connection String avec pour libellé "CustomHeaders" et pour valeur les en-têtes voulues sous la forme "en-tête:valeur" et séparées par un retour à la ligne.
Note
En OAuth Code, si l'API fait un contrôle sur le RedirecURI, il faut obligatoirement définir le port utilisé dans le RedirectURI, même si c'est le port 80.
Ce port doit être disponible sur la machine qui fait l'authentification (exécutant MyReport Data).
Important
La documentation de ce paramètre se trouve ici
Important
La configuration d'une connexion REST doit respecter la documentation de l'API : chaque API a ses propres règles de nommage, d'authentification et de structure des données retournées.
Il est possible d'ajouter des paramètres variables ou statiques lors du paramétrage d'une connexion REST
Les paramètres variables sont des formules MyReport qui doivent renvoyer du texte.
Syntaxe : MyReport (... ) Exemple : MyReport ( DateEnTexte ( DateDernierETLOK ) )
Aucune authentification : le Webservice ne nécessite aucune authentification.
Authentification Login / Mot de passe / NTLM : le WebService nécessite un couple login/Mot de passe (aussi appelé Credential) qui est passé dans l’entête de la requête HTTP(s).
Il existe trois modes Login / Mot de passe :
Login / Mot de passe :
- MyReport effectue d'abord un challenge HTTP (un premier appel au serveur sans authentification).
- Le serveur renvoi une erreur 401 avec l'entête
WWW-Authenticate: Basic realm="...."
- MyReport effectue un second appel avec l'entête
Authorization: Basic ....
Basic Auth :
MyReport ne fait qu'un appel avec l'entête
Authorization: Basic ....
Ce mode existe parce que certains serveurs ne respectent pas le protocole du challenge et ne mettent pas la bonne entête dans la réponse.
Authentification Windows (NTLM) :
- MyReport utilise les informations d’identification utilisateur de Microsoft Windows pour tenter l’authentification auprès du serveur
Digest :
- Un premier appel est effectué pour récupérer des informations qui seront utilisés pour calculer l'entête d'authentification
- MyReport fait un appel avec l'entête
Authorization: Digest ....
Le Webservice nécessite une authentification de type OAuth 2.0. Cette authentification utilise un système de Token à durée limitée.
Pour toutes connexions en OAuth 2.0 les paramètres suivants sont requis :
- ID Client : identifiant de l'application. client_id . (obligatoire)
- Code secret client : mot de passe. client_secret (obligatoire)
- Url d'accès (Access Token) : cette URL sert à récupérer le Token que MyReport doit fournir dans l'URL d'accès aux données. MyReport rajoute à cette URL les informations récupérées après l'appel à l'URL d'authentification. URL de récupération des Tokens (nommée
{URLToken}
Fréquence d'actualisation du Token (Refresh Token) : ces paramètres permettent d'avoir toujours un Token valide en appelant l'URL de récupération du Token régulièrement.
Le Refresh Token est stocké dans la configuration du modèle, et est actualisé par le Serveur en fonction de la fréquence configurée en rappelant l' URL de récupération des Tokens.
Cette procédure permet de récupérer l'AccessToken.
{URLAuthentification}?response_type=code&redirect_uri={URLRetour}
Récupération d'un code "code" {codeValue} basé sur un Login/Mot de passe demandé pendant la configuration de la connexion/modèle
{URLToken}?redirect_uri={URLRetour}&grant_type=authorization_code&code={CodeValue}
Récupération d'un RefreshToken "refresh_token" {RefreshTokenValue}
{URLToken}?redirect_uri={URLRetour}&grant_type=refresh_token&refresh_token={RefreshTokenValue}
Récupération d'un AccessToken "access_token" {AccessTokenValue}
Exploitation de l'AccessToken
MyReport appelle l'URL des données en ajoutant automatiquement le paramètre :
access_token={AccessTokenValue}
Lors de l'ETL, on n'utilise que l' URL de récupération des Tokens pour avoir un nouveau AccessToken
La récupération d'un Token se fait à l'aide d'une URL de récupération de Token. Il n'y a pas de phase d'authentification (Login / mot de passe).
Le paramètre URL de retour (nommée {URLRetour}
ou CallbackURL) est optionnel. Si besoin on peut le rajouter en paramètre supplémentaire du ConnexionString de la connexion.
Exemple : En premier paramètre, Libellé : OAuthIncludeCallbackURL ; valeur : true En deuxième paramètre, Libellé : CallbackURL ; valeur : http://localhost:XXXX/callback
2 URLs supplémentaires sont à configurer pour la mise en place d'une authentification avec le protocole OAuth 2.0 - Authorization Code:
URL de retour (nommée
{URLRetour}
ou CallbackURL)URL d'authentification (nommée
{URLAuthentification}
)
Paramètres de fréquence d'actualisation du Token : Permet de sélectionner les jours de la semaine et la répétition hebdomadaire d'actualisation
Lors de la validation de la connexion en Authorization Code, la mire de validation apparaît.
Astuce
Des paramètres supplémentaires d'autorisation OAuth peuvent être passés dans l'onglet d'authentification.
Par exemple, pour passer le scope d'authentification directement dans la chaine de connexion, on aura pour syntaxe :
Libellé |
Valeur |
---|---|
scope |
basic email |