DES WEB
SERVICES ET
DES API
S E D D I K I LY E S
(5ÈME ANNÉE SPÉCIALITÉ RÉSEAU)
SOMMAIRE
1. Contexte des applications distribuées
3. Le modèle RPC
5. Le protocole SOAP
Plusieurs critères peuvent permettre de classifier les systèmes et applications distribuées, parmi
ceux-ci:
• Architecture Client/Serveur
• Architecture paire à paire (peer 2 peer)
2. Par le synchronisme des opérations de calcul entre applications: selon que les programme
seront coordonnés de façon directe ou avec un décalage, on a ici aussi 2 principaux modèle:
• Opérations synchrones
• Opérations asynchrones
Avantage: le flot de contrôle est le même que dans l'appel en mode centralisé (simule du temps réel)
Inconvénient: le client reste inactif jusqu’à la réponse du serveur
CALCUL SYNCHRONE ET CALCUL ASYNCHRONE
Programmation asynchrone
• Le client poursuit son exécution immédiatement après l'émission du message porteur de
l'appel.
• La procédure distante s'exécute en parallèle avec la poursuite du client.
• Le client doit récupérer les résultats quand il en a besoin (primitive spéciale).
Avantage: le flot de contrôle est le même que dans l'appel en mode centralisé (simule du temps réel)
Inconvénient: le client reste inactif jusqu’à la réponse du serveur
TYPES DE PARALLÉLISME
Quand il existe un besoin de distribuer des taches sur plusieurs nœuds réseau, on va parler de
parallélisme, un concept dans lequel soit les taches, soit les données peuvent être partagées sur les
machines.
Les 2 principaux types de parallélisme existent:
• Parallélisme des données
• Parallélisme des graphes
TYPES DE PARALLÉLISME
Parallélisme des données
Quand les tâches sont identiques, le programme appartient à la catégorie Programme unique,
données multiples (SPMD) , comme dans l’exemple ou les mêmes données vont être partagées
sur 3 mémoires, pour le calcul d’une somme, ou on doit donc avoir un système de
synchronisation;
TYPES DE PARALLÉLISME
Parallélisme des données
dans le cas contraire, il appartient à la catégorie Programme multiple, données multiples
(MPMD), comme dans l’exemple suivant, ou la même opération sera partagée sur 3 machines et
les données seront divisées en 3, et ensuite tous les résultats seront additionnés.
TYPES DE PARALLÉLISME
Parallélisme des taches
Il se concentre lui sur la distribution du calcul (des taches). Une fois modélisé en tant que graphe,
un programme peut être distribué sur des machines dans un système distribué à l’aide d’une
technique de partitionnement de graphe, qui implique la division du travail (sommets) sur des
nœuds distribués afin d’optimiser le calcul distribué.
Il est largement utilisé dans de nombreux domaines tels que le machine learning, l’exploration de
données, la physique et la conception de circuits électroniques.
TYPES D’ÉCHANGES
Indépendamment des critères vu précédemment, les programmes distribués en réseau pourront
s’envoyer des taches et des données de 2 façons principales:
Pull : cette stratégie nécessite que les destinataires d’une ressource demandent une assignation de travail.
Ce protocole réduit considérablement la complexité et peut éviter le déséquilibre de la charge, car la
décision de savoir si un destinataire particulier est prêt ou non est déléguée au subordonné lui-même. On
retrouve ce type dans les échanges http sur le Web par exemple (le client demande des ressources à un
serveur)
Push : cette stratégie attribue le travail aux subordonnés unilatéralement, sans leur demande.
L’ intérêt peut être d’obtenir des systèmes temps-réel, ou il n’y a pas besoin d’attendre des requêtes
pour y répondre, on retrouve ce type dans les technologies de sockets et de web sockets par exemple.
LES MODÈLES D’EXÉCUTION
LES MODÈLES D’EXÉCUTION
1. Modèle RPC (client-serveur)
Le principe du Remote Procedure Call est simple, avec un appel de procédure
à distance, c’est à dire une machine qui déclenche une procédure sur une autre
(pas seulement un échange de message).
Motivations:
• Spécification commune au client et au serveur contrat entre le client et le serveur
• Définition du type et de la nature des paramètres (IN, OUT, IN-OUT)
• Indépendance des langages de programmation
Principes:
• Langage déclaratif
• Outils de génération des talons (stub/proxy et skeleton/squelette)
LES MODÈLES D’EXÉCUTION
1. Modèle RPC (client-serveur)
LES MODÈLES D’EXÉCUTION
Limites des modèles RPC
• Le RPC est un mécanisme de “bas niveau” des services additionnels sont nécessaires pour la
construction d’applications réparties (désignation, fichiers répartis, sécurité, etc.)
Mode ou les applications qui échangent ne sont pas définies par leur service mais par le fait qu’elles soient
émetteur ou récepteurs d’un message.
Orienté « multicast »
• Données émises vers plusieurs récepteurs
• Exemples : IP multicast, multicast applicatif (sur architecture P2P), Gossip-based data dissemination
LES MODÈLES D’EXÉCUTION
2. Modèle de communication par messages
– Publish/Subscribe
LES MODÈLES D’EXÉCUTION
2. Modèle de communication par messages
Message queuing:
Abonnements (Publish/Subscribe):
• L’émetteur envoie un message basé sur un sujet (subject-based) ou sur un contenu (content-based)
• Le récepteur s’abonne (à un sujet ou un contenu)
• Désignation anonyme
• Communication 1-N (plusieurs consommateurs peuvent s’abonner)
• Mode « Push » : le retrait est à l’initiative du producteur
LES MODÈLES D’EXÉCUTION
3. Modèle de communication par événements
Un évènement se passant sur un des nœuds déclenchera une réaction sur un autre.
Mode "Pull":
Mode "Push":
Une méthode prédéfinie (réaction) est attachée à chaque type de message (événement) ;
• Beaucoup utilisé dans des domaines comme les Web Sockets, la gestion des workflows, et pour faire
coopérer des outils de développement.
LES MODÈLES D’EXÉCUTION
4. Modèle de communication par orienté mémoire partagé
• Paradigme d’interaction proche d’un schéma Lecteur/Rédacteur sur un objet virtuellement partagé.
• Programmes pouvant se déplacer d’un nœud à l’autre, afin de rapprocher le code des données et de
réduire la taille des échanges réseau.
• Elles permettent une séparation des rôles et du développement entre différentes machines
(comme un serveur et ses clients).
• Système logiciel identifié par un URI, dont les interfaces publiques et les « bindings » sont
définies et décrites en XML et exposées par un IDL nommé Web Service Description Language.
• Rassemblent un ensemble de standards ouverts, dont le plus connu est SOAP, qui permet
d’échanger en XML.
TECHNOLOGIES PROFITANT DE LA
PROGRAMMATION DISTRIBUÉE
• Représentation utilise le principe des « MIME types » dans l’en-tête HTTP XML
(application/xml), JSON (application-/json), ...
• Pas d’état (stateless): Chaque requête est auto-suffisante, afin de ne rien charger de superflu sur
le serveur.
• Base des principales Web APIs connues (Google Maps, Weather underground,…etc)
TECHNOLOGIES PROFITANT DE LA
PROGRAMMATION DISTRIBUÉE
• L'API WebSocket est une technologie évoluée qui permet d'ouvrir un canal
de communication bidirectionnelle entre un client et un serveur, c’est un
protocole réseau basé sur TCP.
Les microservices
• Les microservices désignent à la fois une architecture et une approche de développement
logiciel qui consiste à décomposer les applications en éléments les plus simples, indépendants
les uns des autres.
• En général, chaque service prend en charge une fonctionnalité distincte, agissant comme une
mini-application dotée de sa propre logique opérationnelle.
• Pour qu'une architecture de microservices s'exécute comme une application fonctionnelle, les
services doivent en permanence demander des données à d'autres services via un système de
messagerie.
• Elles permettent une très bonne distribution des fonctionnalités, cependant, gérer un tel
environnement dynamique composé de tant de parties mobiles est une tâche complexe.
TECHNOLOGIES PROFITANT DE LA
PROGRAMMATION DISTRIBUÉE
Les microservices
TECHNOLOGIES PROFITANT DE LA
PROGRAMMATION DISTRIBUÉE
Le Cloud
Un cloud étant défini comme un ensemble de services logiciels, de plateforme et d’infrastructure basés sur
Internet proposés par le biais d’un cluster (ou de clusters) d’ordinateurs en réseau (par exemple, les centres de
données), il est un système distribué.
L’efficacité des programmes cloud dépend de la manière dont ils sont conçus, implémentés et exécutés. Le
processus de développement doit répondre à plusieurs considérations :
• Quel modèle de programmation sous-jacent est le plus approprié : passage de messages ou mémoire partagée ?
• Quelle est la meilleure façon de configurer les données afin d’optimiser les calculs : en utilisant le parallélisme des
données ou le parallélisme des graphes ?
• Quelle est la structure architecturale et de gestion qui améliore le plus la complexité, l’efficacité et la scalabilité des du
programmes : maître-subordonné ou pair à pair ?
TECHNOLOGIES PROFITANT DE LA
PROGRAMMATION DISTRIBUÉE
Le Cloud
Selon la catégorie de service (IaaS, Paas, SaaS) et les besoins en terme d’applications, différents modèles
d’exécution de programmation distribuée pourront être mis en place.
TECHNOLOGIES PROFITANT DE LA
PROGRAMMATION DISTRIBUÉE
La conteneurisation et l’orchestration
La conteneurisation est un type de virtualisation au niveau de l'application, qui permet de créer plusieurs
instances d'espace utilisateur isolées sur un même noyau.
Les conteneurs fournissent une méthode standard pour regrouper le code, le moteur d'exécution, les outils
système, les bibliothèques système et les configurations d'une application en une seule instance.
Le déploiement et l'organisation des conteneurs pour prendre en charge les applications s'appelle conteneur
orchestration, via un outil d'orchestration de conteneur. Kubernetes, Docker Swarm et LXC sont quelques-uns
des outils d’orchestration de conteneurs open source populaires.
• Ces outils doivent permettre aux conteneurs d’échanger en réseau, selon différents modes de synchronisation
et architectures.
• L’utilisation des conteneurs peut simplifier la mise en œuvre de systèmes distribués en permettant à de
multiples applications, tâches de fond et autres processus de s'exécuter de façon autonome à travers plusieurs
machines isolées.
TECHNOLOGIES PROFITANT DE LA
PROGRAMMATION DISTRIBUÉE
La Blockchain:
Par extension, une blockchain constitue une base de données distribuée qui contient l’historique de tous les
échanges effectués entre ses utilisateurs depuis sa création. Elle est partagée par ses différents utilisateurs, sans
intermédiaire, ce qui permet à chacun de vérifier la validité de la chaîne.
TECHNOLOGIES PROFITANT DE LA
PROGRAMMATION DISTRIBUÉE
Le cloud native:
Concept d’applications évolutives sur des environnements dynamiques et en réseau. Elles sont conçues pour
s’étendre horizontalement plutôt que verticalement et se basent sur des technologies comme les conteneurs, les
microservices et les API.
LES ARCHITECTURES DISTRIBUÉES
Client-serveur (2-tiers)
• Rôles spécifiques
• Caractéristiques distinctes
• Les paires peuvent utiliser différents protocoles
LES ARCHITECTURES DISTRIBUÉES
3-tiers ou N-tiers
Une infrastructure physique qui va servir de support à une infrastructure
logicielle (l'infrastructure trois tiers sous-tend l'infrastructure logicielle).En
effet, n'importe quelle application peut-être découpée en trois parties : une
partie interface graphique, une partie fonctionnelle, et une partie de stockage
de données.
LES ARCHITECTURES DISTRIBUÉES
Dans un contexte comme celui des sites internet classiques, le serveur génère
le contenu pour les client (éventuellement à partir de BDD)…
• Une fois créé le socket qui reçoit des demandes de communication, peut
être appelé par un autre socket
• Il faut connecter un socket à un autre socket qui est en attente
(connect)
54
WEB SOCKETS
55
RPC (REMOTE PROCEDURE CALL)
– Avantages de la communication en appel de procédure
distante:
• Ne pas avoir à programmer des échanges au niveau réseau en mode message.
• Le principe le plus simple, avec un appel de procédure à distance, c’est à dire une machine qui
déclenche une procédure sur une autre (pas seulement un échange de message).
• /* Coté client : invoque génère l’appel distant et récupère le résultat
Exp: invoque (id_client, id_serveur, nom_procedure, paramètres);
• /* Coté serveur : reçoit, traite un appel et répond
Exp: traite (id_client, id_serveur, nom_procedure, paramètres);
RPC (REMOTE PROCEDURE CALL)
• Souches client et serveur
Avantage: le flot de contrôle est le même que dans l'appel en mode centralisé
(simule du temps réel)
Inconvénient: le client reste inactif jusqu’à la réponse du serveur
RPC (REMOTE PROCEDURE CALL)
Appel de procédure distante en mode asynchrone
• Le client poursuit son exécution immédiatement après l'émission du message porteur
de l'appel.
• La procédure distante s'exécute en parallèle avec la poursuite du client.
• Le client doit récupérer les résultats quand il en a besoin (primitive spéciale).
RPC (REMOTE PROCEDURE CALL)
IDL (Interface Définition Language )
Une syntaxe de transfert qui permet au client et au serveur de se comprendre
Permettre l’invocation distante avec tout langage évolué
• Définition d’un langage pivot de description de données ayant des fonctionnalités
assez riches pour les langages les plus récents.
• Définition d ’un langage pivot qui permette de corriger les ambiguïtés et les
insuffisances des langages anciens (comme par exemple C).
• Notion de correspondance entre les types retenus dans l'IDL et les types des différents
langages existants ("mappings")
• Ces langages sont souvent représenter dans des formats standards, en particulier
XML et JSON
EN QUEL FORMAT COMMUNIQUER
Les services Web échangent des données dans des formats qui doivent être interprétables
par tous les serveurs et tous les types de clients pouvant échanger.
• Text/plain: Format string basique, pour les échanges de messages simples
• XML: Un langage standardisé par la W3C et basé sur un système de balises. Il peut
décrire à la fois des valeurs et les relations entre les valeurs
• JSON: C’est la syntaxe de base des objets du langage JavaScript. C’est une
représentation sans schéma, en texte clair, de données structurées basées sur des paires
nom/valeur et des listes ordonnées, et on peut y stocker toute sorte de données (string,
nombres, arrays, fonctions…etc)
Des fichiers peuvent également être transmis, souvent à travers les types définis par le
standard MIME (Multipurpose Internet Mail Extensions) qui contient de nombreux
types de médias à transmettre (image, audio, video…etc)
LES SERVICES WEB
• Un service web est un système logiciel identifié par un URI, dont les
interfaces publiques et les « bindings » sont définies et décrites en XML.
• Le principe est basé sur les Architectures orientées services (SOA)
• Sa définition peut être découverte [dynamiquement] par d’autres systèmes
logiciels. Ces autres systèmes peuvent ensuite interagir avec le service web
d’une façon décrite par sa définition, en utilisant des messages XML
transportés par des protocoles Internet.
Extension de XML-RPC
LES SERVICES WEB
LES SERVICES WEB
Groupe de standards ouverts
• L’API, pour Application Programming Interface, est la partie du programme qu’on expose
officiellement au monde extérieur pour manipuler celui-ci. L’API est au développeur ce que
l’User Interface est à l’utilisateur. Cette dernière permet d’entrer des données et de les récupérer
la sortie d’un traitement. Initialement, une API regroupe un ensemble de fonctions ou méthodes,
leurs signatures et ordre d’usage pour obtenir un résultat.
• La mise en place d’une API permet d’opérer une séparation des responsabilités entre le client et
le serveur. Cette séparation permet donc une portabilité et évolutivité grandement améliorées.
Chaque composant peut évoluer séparément car il n’y a aucune logique du côté du serveur.
• Ainsi on peut imaginer une refonte totale de la charte graphique du site web sans devoir
modifier le code côté serveur ou sur les autres clients.
• Le protocole SOAP
SOAP
Principes
• Protocole d’échanges d’informations dans un environnement distribué basé sur XML
• Interopérabilité entre applications d’une même entreprise (Intranet)
• Interopérabilité inter entreprises entre applications et services web
• SOAP peut utilisé plusieurs protocoles : HTTP, SMTP, POP
SOAP
SOAP est principalement composé de trois parties:
• Les enveloppes SOAP (ou Message)
• Les règles d’encodages
• La représentation RPC
SOAP
L’Enveloppe SOAP est Obligatoire , elle possède:
• Une en-tête (Header) Optionnelle
• Le corps (Body) qui est Obligatoire
Corps
• Identifié par la balise <namespace:Body>
• Contient la réponse à l’appel d’une action du service
Une erreur
Réponse de l’action
SOAP
WSDL (Web Service Description Language )
• Les deux techniques ont des problèmes à prendre en compte au moment de décider quel
protocole utiliser. Avant d'aller plus loin, il est important de préciser que même si SOAP et
REST présentent des similitudes en utilisant le protocole HTTP, SOAP est un ensemble plus
rigide que REST. REST a une architecture qui ne nécessite pas de traitement et qui est
naturellement plus flexible. SOAP et REST reposent sur des règles bien établies que tout le
monde a accepté de respecter dans l'intérêt de l'échange d'informations.
L’ARCHITECTURE REST
• Identification : URIs
• Opérations (HTTP) : GET, PUT, POST, DELETE
• Contenu
– Représentation
– Utilise le principe des « MIME types » dans l’en-tête HTTP XML (application/xml), JSON (application-/json), ...
• Pas d’état (stateless): Chaque requête est auto-suffisante, afin de ne rien charger de superflu sur le serveur.
• Orienté ressources
– Représentation = état courant de la ressource
– Liens entre les ressources par hyperliens (href)
L’ARCHITECTURE REST
• Exemple
L’ARCHITECTURE REST
• Une API REST se doit d’être sans état ou stateless en anglais. La
communication entre le client et le serveur ne doit pas dépendre d’un
quelconque contexte provenant du serveur. Ainsi, chaque requête doit
contenir l’ensemble des informations nécessaires à son traitement. Cela
permet au serveur de traiter indifféremment les requêtes de plusieurs clients
via de multiples instances de serveurs.
Roy
Fielding
(2000)
L’ARCHITECTURE REST
Critères du Rest
• Il existe quatre grands niveaux d’évaluation d’une API. Au plus on atteint un niveau élevé au
plus notre API est considérée comme RESTful et respecte ce qu’on appelle communément les
“bonnes pratiques”.
• Client–serveur
• Sans état (stateless)
• Avec mise en cache
• En couches (impossible de déterminer le nombre de saut)
• Avec code à la demande
• Interface uniforme
– Identification des ressources dans les requêtes
– Manipulation des ressources par des représentations
– Messages auto-descriptifs
– Hypermédia comme moteur d'état de l'application
L’ARCHITECTURE REST
Caractéristiques :
• Les services REST sont sans états (Stateless)
– Chaque requête envoyée au serveur doit contenir toutes les informations relatives à son
état et est traitée indépendamment de toutes autres requêtes
– Minimisation des ressources systèmes (pas de gestion de session, ni d’état)
• Interface uniforme basée sur les méthodes HTTP (GET, POST, PUT,
DELETE)
• Les architectures RESTful sont construites à partir de ressources
uniquement identifiées par des URI(s)
L’ARCHITECTURE REST
Structure d’une requête :
• Ressources : Identifiée par une URI
Exp: ( http://unice.fr/cursus/master/miage)
• XMLHttpRequest
• Ajax
• Fetch API
• Axios
• La gestion des accès et la sécurité
CROSS-ORIGIN RESOURCE SHARING
(CORS)
• Mécanisme qui consiste à ajouter des en-têtes HTTP afin de permettre à un
agent utilisateur d'accéder à des ressources d'un serveur situé sur une autre
origine que le site courant. Un agent utilisateur réalise une requête
HTTP multi-origine (cross-origin) lorsqu'il demande une ressource
provenant d'un domaine, d'un protocole ou d'un port différent de ceux
utilisés pour la page courante.
• Le standard CORS décrit de nouvelles entêtes HTTP qui offrent aux
navigateurs et aux serveurs un moyen de faire une requête vers une URL
distante uniquement s'ils en ont l'autorisation. Bien que certaines validations
et autorisations peuvent être effectuées par le serveur, il est généralement de
la responsabilité du navigateur de supporter ces entêtes et d'honorer les
restrictions qu'elles imposent.
CROSS-ORIGIN RESOURCE SHARING
(CORS)
MENACES SUR LES WEB SERVICES
• L’évolution rapide de l’écosystème du Web génére sans cesse de nouvelles menaces sur les
APIs.
• Le Open Source Web Application Security Project (OWASP) met régulièrement à jour la liste
des différents dangers et failles de sécurité et diffuse des conseils aux entreprises pour mieux
protéger leurs applications Web.
MENACES SUR LES WEB SERVICES
DDoS
Les dénis de services distribués sont un ensemble de techniques d’attaques (surtout contre les
serveurs) dont le principe est de saturer la machine attaquée, par exemple en lui envoyant une
quantité ingérable de requêtes en un minimum de temps.
Certains firewall permettent de protéger les serveurs Web contre ce type d’attaque.
Des intelligences artificielles sensées analyser les requêtes et détecter les situations dangereuses
commencent aussi à être développées.
MENACES SUR LES WEB SERVICES
Injections SQL
Les infections SQL sont des interférences que produit un hacker sur les requêtes
qu’une application enverra au serveur pour être exécuter au niveau d’une base de
données, soit pour récupérer des données, ou pire, pour altérer le système
d’information.
AUTHENTIFICATION ET AUTORISATION
Obligation d’utiliser un
cryptage (comme SSL)
pour éviter les attaques
Man in the Middle ce qui
consomme des ressources,
en plus du risque de
sessions restées ouvertes
AUTHENTIFICATIONS
Authentification par une clé API
Dans cette approche, une valeur générée unique est attribuée à chaque utilisateur pour
la première fois, ce qui signifie que l'utilisateur est connu. Lorsque l'utilisateur tente de
revenir dans le système, sa clé unique (parfois générée à partir de la combinaison
d’informations matériel et de données IP, et parfois générée de manière aléatoire par le
serveur qui les connaît) est utilisée pour prouver qu'il s'agit du même utilisateur
qu'auparavant.
Ce système est très bon en terme de performance et facile à mettre en place, c’est
pourquoi il est très utilisé par les Web APIs.
Cependant c’est une solution peu sécurisée étant donné que tout dépend d’une clé qui
peut-être récupérée sur le réseau (par sniffing) ou une machine non sécurisée (par un
spyware par exp)
AUTHENTIFICATIONS
Les SESSIONS
Un mécanisme permettant à certains types de serveurs (comme eux utilisant PHP) de
gérer l’identité des utilisateurs.
Il peut être efficace dans des réseaux limités ou pour un nombre d’utilisateurs restreints,
mais ils obligent les serveurs à conserver des informations en mémoire ce qui peut-être
problématique au cas ou le nombre de clients deviendrait trop important, et c’est contre
le principe stateless des Api Rest.
En plus les systèmes de sessions utilisent les web COOKIES pour identifier le client,
ce qui peut constituer une vulnérabilité à des attaques par sidejacking ou XSS par
exemple.
AUTORISATIONS
Json Web Tokens (JWT)
JWT ou JSON Web Token est un standard ouvert décrit dans la RFC 7519 qui permet
l’authentification d’un utilisateur à l’aide d’un jeton (token) signé. Le principe est le
suivant :
AUTORISATIONS
1. Header : La première partie du JWT est le header. Il s’agit d’un objet JSON encodé
en base64 qui représente l’en-tête du token. Il est composé de deux parties :
• Le type du token;
• L’algorithme utilisé pour la signature
exp: { "typ":"JWT" , "alg":"HS256" }
2. Payload : La seconde partie du JWT est le payload. Il s’agit tout comme le header,
d’un objet JSON encodé en base64 qui représente cette fois-ci le corps du token. C’est
dans cette partie que l’on mettra les informations de l’utilisateur (identifiant, rôle, etc.)
ou toute autre information utile au serveur.
Signature : La dernière partie est la signature du token. Il s’agit d’un hash des deux
premières parties du token réalisé en utilisant l’algorithme qui est précisé dans le header
exp: HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), 'secret')
AUTORISATIONS
L’algorithme utilise une clé secrète (détenue par le serveur), utilisée pour signer les
tokens mais également s’assurer de la validité de ceux-ci en vérifiant leur signature. De
ce fait, si un utilisateur malveillant modifie le contenu du token, la signature ne sera
plus correcte et le jeton sera ainsi rejeté.
Un JWT possède une date d’expiration (propriété “exp” du payload), ainsi lorsqu’un
JWT expiré est envoyé lors d’une requête à l’API, celle-ci renverra une erreur 401
indiquant que le JWT n’est plus valide. La durée de validité d’un JWT va dépendre du
type de données échangées. Elle sera de quelques minutes pour l’échange de données
sensibles à plusieurs heures pour les données non sensibles.
• Les grands noms de l'informatique proposent des API publiques pour interagir avec leurs services :
• Graph API (Facebook) permet d'interagir avec les données de Facebook (publication, importer des
photos…) ;
• Google API, Google propose des accès pour l'ensemble de ses services. Si l'on prend Maps par exemple,
l'API permet de calculer des trajets, de gérer la conversion de coordonnées GPS/adresses ou encore de
connaitre l'altitude liée à une position ;
• Twitter API permet de lire et d'écrire sur un flux Twitter ;
• Pay permet d'intégrer la solution de paiement PayPal dans son application ;
• GitHub API ;
• Flickr API.
NOUVELLES TECHNOLOGIES DE WS
• Exemple :
GET /graphql?query={ contact(id: "1") { nom, prenom, adresse {
rue, ville } } } { "nom": "Doe", "prenom": "John", "adresse":
{ "rue": "75000", "ville": "Paris", } }
Ce qui permet par exemple d’éviter de créer un trop grand nombre de fichiers coté
serveur pour répondre à des demandes de types différents
NOUVELLES TECHNOLOGIES DE WS
GraphQL n’est pas une norme, mais un projet développer par Facebook, il
en existe d’autres similaires comme Falcor (développé par Netflix)
LES TECHNOLOGIES UTILISANT REST