Architecture orientée Service
MP-RITEL / GT / IDSD
Niveau 2
Dr. Ing. Mohamed KOUBAA
Email:
[email protected] Les services Web
Définition & Architecture répartie
Contexte
} Evolution du Web des usagers au Web des
communications entre applications
WEB Data General Data General
WEB Data General
Usager +
Navigateur Web Serveur Web Application 1 Application 2
Communications entre Communications
un usager et une application entre applications
L’entité principale est l’usager. L’entité principale est l’application.
Ex : Achat d’un livre via les Ex : Achat automatisé de
pages Web d’une compagnie fournitures (via un Service Web)
4
Evolution du Web
HTTP, XML
HTTTP HTTP
HTTP,XML
Interaction
entre deux
Generation 1 Generation 2 Generation 3 applications
Static HTML Web Applications Web Services
(JSP,PHP,ASP, … )
5
Définition d’un service Web
} Un service Web (Web Service, WS) est une entité logicielle :
} Mise à disposition sur l’Internet ou sur un réseau privé (Intranet),
} publiable et accessible en utilisant le langage XML et les
protocoles standards du Web,
} Indépendante du système d’exploitation (UNIX, Windows,…) et
du langage de programmation (C#, JAVA,…)
6
Le modèle des services Web
} Les services Web introduisent un nouveau modèle de
développement basé sur ce qu’on appelle les architectures
orientées services.
} Une architecture orientée services se focalise sur une
décomposition plus abstraite dans la résolution des problèmes.
On parle de résolution dirigée par les services.
} Un service résout un problème donné.
} Les services peuvent être combinés pour résoudre des
problèmes de plus en plus complexes.
7
Le modèle des services Web
} Le modèle des Web Services est défini par une architecture et
un ensemble de protocoles standardisés : SOAP, WSDL, UDDI.
} Spécifications garanties par W3C et OASIS,
} Objectifs du modèle
} Modularité,
} Réutilisation et composition de services,
} Interopérabilité,
} Dialogue entre environnements et plate-formes hétérogènes,
} Intégration,
} Masquage de la complexité.
8
Exemple: Agence de voyage
} Une agence de voyage web combine plusieurs
services :
} Réservation de billets d’avion, de train
} Réservation de logement
} Réservation de véhicules de location
} Et donc utilise les services proposés par la SNCFT, Tunisair,
RentACar, …
9
Exemple: Agence de voyage
L’application Web
consultée par le client
met en œuvre des
services web répartis
pour satisfaire sa
demande.
10
Acteurs impliqués
• Le fournisseur de service (Service Provider)
– Application s'exécutant sur un serveur et
comportant un module logiciel accessible par
Internet en XML
• Le client (Service Requester)
– Application cliente se liant à un service et invoquant
ses fonctions par des messages XML (SOAP)
• L’annuaire de services (Service Registery)
– Annuaire des services publiés par les providers
(UDDI)
11
Architecture Orientée Services
12
Utilisation des Web Services
UDDI
2: Recherche 1: Inscription
de service 3: Description
WSDL
5: Requête SOAP
7: Réponse SOAP
4: Construction
requête 6: Traitement
13
Technologies
Annuaire UDDI 1. Déploiement
De Web Services
Description Description Web
Description
WSDL WSDL Service
WSDL
Description
WSDL
3. Découverte 2. Publication
Description
Fournisseur
Service Web
Description
Client Description
WSDL de Web Services
Réservation WSDL WSDL
Séjour
du Web Service
4. Invocation Web
Proxy
Application Protocole SOAP
Service Application
Description
WSDL
14
Fournisseur de service
15
Technologies
} WSDL
} Web Service Description Language
} Description des services web
} SOAP
} Single Object Access Protocol
} Protocole de communication des services web
} UDDI
} Universal Description Discovery and Integration
} Annuaire de services web
16
Scénario complet
} Étape 1: définition et description du service
} On doit décrire de point de vue informatique ce que fait le service, la
solution qu’il propose…
} La définition est faite en WSDL par le fournisseur de services (i.e. le serveur
d’applications).
} Étape 2: publication du service par le fournisseur
} Une fois le service est défini et décrit, la description WSDL peut être publié
dans un annuaire UDDI afin de le rendre accessible aux clients.
} Étape 3: recherche du service par un client
} Le client se connecte sur un annuaire UDDI pour effectuer une recherche de
services.
} Étape 4: invocation du service par le client
} Une fois le service trouvé par le client, ce dernier peut invoquer le service
suivant les conditions inscrites au sein de la description WSDL trouvée.
17
Un service en action
18
Bénéfices
} S'appuie sur les standards
} Encapsule la complexité
} Favorise la réutilisation
} Facilite le développement de business process
} Fiabilise les business process
} Simplifie des échanges inter-entreprises
} Sécurise les échanges
} Choix de plate-formes inter-opérables
} .NET
} J2EE
19
Diagramme des protocoles
Composition de services
WS-BPEL, WS-CDL
Découverte/Publication
UDDI
Description
Base
WSDL
Echange
SOAP
Transport
HTTP, SMTP, FTP, JMS
20
WSDL
Web Service Description Language
Web Services – WSDL
} WSDL est un langage XML dédié à la description de tous les
éléments nécessaires pour interagir avec un service Web.
} Version : W3C
} WSDL 1 est prévu pour fonctionner avec SOAP 1.1
http://www.w3.org/TR/wsdl
} WSDL 2 est prévu pour fonctionner avec SOAP 1.2
http://www.w3.org/TR/wsdl20
22
Web Services – WSDL
} WSDL est un langage qui permet de décrire:
} Un service Web (service réseau),
} et comment l’invoquer (localisation, paramètre, structure de retour,
..)
} Le fichier WSDL est au format XML et regroupe toutes les
informations nécessaires pour interagir avec le Web Service :
} Les méthodes
} Les paramètres et valeurs retournées
} Le protocole de transport utilisé
} La localisation du service
} Le fichier WSDL peut être généré par les outils de
développement pour favoriser une intégration rapide du service
23
Présentation
} WSDL est indispensable au déploiement de Web Services
} Publication et recherche de services au sein de l’annuaire
UDDI se font via le document WSDL
} Pour l’accès à un service particulier, un client se voit retourné l’URL
du fichier WSDL décrivant l’implémentation du service.
} Seul l’emplacement de ce fichier WSDL est indiqué puisque ce
dernier référence l’autre document WSDL décrivant l’interface de
mise en œuvre du service.
24
Structure
} Un document WSDL est constitué de plusieurs éléments
permettant la plus grande abstraction possible dans la définition
des services
} Ces différents éléments permettant de séparer les briques
habituellement mises en jeu dans l’utilisation des services
} Ces briques sont pour l’essentiel :
} L’adresse où est situé le service
} Le protocole associé à l’utilisation du service
} L’ensemble des opérations accessibles
} Les types de données à véhiculer dans les opérations
} …
25
Description
} Elément Type
Service
} Types des paramètres (schéma XML)
} Elément Message
} Appel et retour d'opération Port Port
(e.g. http://host/svc)
} Elément Port type Binding
(e.g. SOAP)
Binding
} Groupe d'opération
} Elément Binding portType
} URL de l'opération
operation(s)
} Type de protocole
inMessage outMessage
Abstract interface
26
Description
<definitions name = "..." xmlns: …>
} <types>
Contient les définition de types utilisant un système de typage (comme XSD)
} <message>
Décrit les noms et types d’un ensemble de champs à transmettre (Paramêtres
d’une invocation, valeur du retour, …)
} <portType>
Décrit un ensemble d’opérations. Chaque opération a zero ou un message en
entrée, zero ou plusieurs message de sortie ou de fautes
} <binding>
Spécifie une liaison d’un <porttype> à un protocole concret (SOAP1.1, HTTP1.1,
MIME, …). Un porttype peut avoir plusieurs liaisons !
} <port>
Spécifie un point d’entrée (endpoint) comme la combinaison d’un <binding> et
d’une adresse réseau.
} <service>
Une collection de points d’entrée (endpoint) relatifs.
27
Exemple de service
} Exemple (Service Web - Java)
} Nous commençons par un service Web simple qui consiste à
calculer la somme de deux valeurs entiers.
} Les WSDL présentés dans la suite sont générés
automatiquement par Java2WSDL
28
Types
} L’élément types contient les définitions de types utilisant un
système de typage (comme XML schéma)
29
message
} Les messages sont envoyés entre deux interlocuteurs
(exemple: une opération reçoit et envoie des messages).
} Un message est composé de plusieurs part
} Deux façons de définir des part
} Soit une part est un élément de type simple
Exemple:
<wsdl:message name="personneMsg">
<wsdl:part name="nom" type="xsd:string" />
<wsdl:part name="prenom" type="xsd:string" />
</wsdl:message>
} Soit une part est un élément XML dont le type est défini dans un
XML Schema
30
Message: exemple
31
PortType
} Un portType permet d’identifier (nommer) de
manière abstraite un ensemble d’opérations.
} WSDL définit 4 types d’opération :
} One-Way : lorsque les opérations reçoivent des messages mais
n’en n’envoient pas
} Request-response : lorsque les opérations reçoivent des
messages puis renvoient des messages
} Solicit-response : lorsque les opérations envoient des messages
puis en reçoivent
} Notification : lorsque les opérations envoient des messages
mais n’en reçoivent pas
32
Operation
} Quelque soit le type d’opération la définition est sensiblement
la même.
} Une opération :
} Reçoit des messages : <wsdl:input …>
} Envoie des messages : <wsdl:output …> ou <wsdl:fault …>
} La présence et l’ordre des input/outputs/fault dépendent du
type de l’opération.
33
Operation: exemple
34
Binding
} WSDL permet de lier une description abstraite (portType) à
un protocole.
} Chacune des opérations d’un portType pourra être liée de
manière différente.
} Le protocole SOAP est un des protocole qui peut être utilisé.
} D’autres binding sont standardisés par WSDL : HTTP et
MIME.
<wsdl:binding name="binding_name" type=“portType_name" >
…
</wsdl:binding>
35
Binding SOAP
} Pour préciser que le binding est de type SOAP, il faut
inclure la balise suivante :
<soap:binding transport="uri" style="soap_style" />
} Transport définit le type de transport
} http://schemas.xmlsoap.org/soap/http
pour utiliser SOAP/HTTP
} Style définit la façon dont sont créer les messages
SOAP de toutes les opérations
} rpc : Encodage RPC défini par SOAP RPC
} document : Encodage sous forme d’élément XML
36
Binding SOAP
} Pour chaque opération du portType :
} il faut préciser l’URI de l’opération : soapAction
} Il est aussi possible de repréciser la façon dont sont créés les
messages SOAP : style
} Pour chaque message de chaque opération, il faut définir
comment sera créé le message SOAP
37
Binding: exemple
38
Service
} Un service est un ensemble de ports
} Un port a un portType
} Dans le cadre de SOAP, un port à une adresse (qui
correspond à l’adresse http)
<wsdl:service name=“Service_name">
<wsdl:port name=“port_name” binding=“binding_name">
<soap:address location=“adress_Of_Deployed_Service"/>
</wsdl:port>
</wsdl:service>
39
SOAP
Simple Object Access Protocol
40
40
Introduction
} SOAP (Simple Object Access Protocol) est un protocole RPC,
orienté objet, bâti sur XML.
} Il permet l’invocation de méthode sur des objets distants
grâce à l’échange de message XML.
} Bien que le protocole de transport le plus commun soit
http(s), il est possible de l’utiliser sur SMTP,
} W3C
} SOAP : http://www.w3.org/2002/07/soap-
translation/soap12-part0.html
41
Introduction
} Basé sur la technologie universelle XML par opposition aux
spécifiques DCOM - DCE/NDR, CORBA - IIOP/CDR, JAVA -
RMI/JRMP, RDA – XDR .
} Indépendant du langage, modèle objet (jusqu’à la version 1.1)
système et plate-forme d’hébergement du service Web.
} Prend en charge les protocoles et formats suivants : HTTP,
SMTP et MIME.
42
Historique
} Septembre 1999 : SOAP 0.9
} Spécifications par MicroSoft et DevelopMentor
} Décembre 1999 : SOAP 1.0
} Soumission des spécifications à l’ IETF
} Association de UserLand
} Mai 2000 : SOAP 1.1
} Nombreuses associations : IBM, HP, Lotus, Compaq, Intel …
} XIDL : rapprochement de Corba
} Septembre 2000
} Groupe de travail W3C pour la standardisation de SOAP
} Corba/Soap Interworking RFP => SCOAP
} Avril 2007 : SOAP 1.2
} SOAP abandonne le modèle objet pour utiliser XML Infosets
43
Structure
<Envelope> est la racine
<Header>, <Body> et <Fault> sont les enfants :
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/
">
<soap:Header>
... Header information...
</soap:Header>
<soap:Body>
... Body information...
<soap:Fault> ...Fault information...
</soap:Fault>
</soap:Body>
</soap:Envelope>
44
Exemple
Requête HTTP invoquant une méthode GetOrders :
POST /Orders HTTP/1.1
Host: xxx.xxx.xxx.xxx
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "http://www.someorders.com/GetOrders"
<?xml version=“1.0”?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<orders:GetOrders
xmlns:orders="http://www.someorders.com/orders">
<CustomerID>ALFKI</CustomerID>
<SalesRepID>85</SalesRepID>
</orders:GetOrders>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
45
Exemple
Réponse HTTP à la requête précédente :
HTTP/1.1 200 OK
MessageType: CallResponse
Content-Type: text/xml
<?xml version=“1.0”?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<orders:GetOrdersResponse
xmlns:orders="http://www.someorders.com/orders">
<……
données en retour sous forme XML
…..>
</orders:GetOrdersResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
46
Structure
} Eléments d’un message SOAP :
Protocol Headers } Envelope
} Élément pouvant contenir des déclarations
SOAP Envelope
d'espaces de noms ou des sous-éléments
} Header (optionnel)
SOAP Header } Permet des extensions telles que
authentification, session…
} Body (obligatoire)
} Définit la méthode appelée, contient les
SOAP Body
paramètres
} Peut contenir un élément Fault en cas
d'erreur
47
Espace de noms – SOAP
} NameSpaces 1.1
} Le namespace des balises SOAP :
http://schemas.xmlsoap.org/soap/envelope
} Le namespace de l’encodage SOAP
http://schemas.xmlsoap.org/soap/encoding
} NameSpaces 1.2
} Le namespace des balises SOAP :
http://www.w3.org/2003/05/soap-envelope/
} Le namespace de l’encodage SOAP
http://www.w3.org/2003/05/soap-encoding
48
SOAP Header
} SOAP Header : Mécanisme d’extension du protocole
SOAP
} La balise Header est optionnelle
} Si la balise Header est présente, elle doit être le premier fils de
la balise Envelope
} La balise Header contient des entrées
} Une entrée est n’importe quelle balise incluse dans un
namespace. Les entrées contenues dans la balise Header sont
non applicatives.
49
SOAP Header
} Exemple
<SOAP-ENV:Header>
<t:Transaction xmlns:t="some-URI" SOAP-ENV:mustUnderstand="0">
5
</t:Transaction>
</SOAP-ENV:Header>
} L’attribut mustUnderstand
} n Rien ou =0 : l’élément est optionnel pour l’application réceptrice
} n =1 : l’élément doit être compris de l’application réceptrice. Sinon le
traitement du message par le récepteur doit échouer.
50
SOAP Body
} SOAP Body : Le Body contient le message à échanger
} La balise Body est obligatoire
} La balise Body doit être le premier fils de la balise Envelope
(ou le deuxième si il existe une balise Header)
} La balise Body contient des entrées qui sont des données
applicatives.
} Une entrée est n’importe quelle balise incluse optionnellement
dans un namespace
} Une entrée peut être une Fault.
51
SOAP Fault
} SOAP Fault : Balise permettant de signaler des cas
d’erreur.
} SOAP 1.1 : La balise Fault contient les balises suivantes:
} Faultcode (Obligatoire): un code permettant d’identifier le
type d’erreur.
} Faultstring (Obligatoire): une explication en langage naturel.
} Faultactor : une information identifiant l’initiateur de l’erreur.
} Detail : Définition précise de l’erreur.
52
SOAP Fault
} Faultcode :4 groupes de code d’ erreur
} Client,
} Server,
} MustUnderstand,
} VersionMismatch
} Exemple SOAP 1.1
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode xmlns="">s:Client</faultcode>
<faultstring xml:lang="fr-FR" xmlns="">
Une opération invalide s'est produite.</faultstring>
</s:Fault>
</s:Body>
</s:Envelope>
53
SOAP – Type
} Les données contenues dans un message SOAP étant typées il faut définir
un moyen de les encoder.
} L’encodage c’est la représentation de valeurs sous forme XML.
} Le décodage est le pendant de l’encodage spot la construction de valeurs à
partir d’XML
} L’XML représentant des valeurs a une structure qui dépend du type de ces
valeurs
} Il faut donc définir ce type
} Soit par un mécanisme définit par l’utilisateur
} Soit en utilisant des Schéma XML (préconisé)
54
SOAP – Type
} Définition
} Value (valeur d’une donnée)
} Simple value (string, integers,etc)
} Compound value (array, struct, …)
} Type (d’une value)
} Simple Type
} Compound Type
55
SOAP – Type
} Types simples
} Types définis dans XML Schéma
} Entier, flottant, entiers négatifs, chaînes caractères, …
} Énumérations
} Types complexes
} Tableaux
} Partie d’un tableau
} Tableau creux (sparse array)
56
Exemple: SOAP – Type
} Types xml simples
<element name=“age” type=“int”>
<element name=“taille” type=“float”>
<age>23</age>
<taille>1.87</taille>
} Enumeration
<element name=“couleur”>
<simpleType base=“xsd:string”>
<enumeration value=“Rouge”>
<enumeration value=“Bleu”>
</simpleType>
<couleur>Bleu</couleur>
57
Exemple: SOAP – Type
<element name=“Personne”>
<complexType>
<element name=“Nom” type=“xsd:string”>
<element name=“Prenom” type=“xsd:string”>
<element name=“Age” type=“xsd:float”>
</complexType>
<Personne>
<Nom>Durand</Nom>
<Prenom>Michel</Prenom>
<Age>34.7</Age>
</Personne>
58
Exemple: SOAP – Type
} Tableau
<element name=“TabPersonne”>
<complexType base=“SOAP-ENC:Array”>
<element name=“Personne” type=“xyz:Personne” maxOccurs=“unbounded”>
</complexType>
</element>
<xyz:TabPersonne SOAP-ENC:arrayType=“xyz:Personne[2]”>
<Personne>
<Nom>Durand</Nom>
<Prenom>Michel</Prenom>
<Age>34.7</Age>
</Personne>
<Personne>
<Nom>Dupond</Nom>
<Prenom>Serge</Prenom>
<Age>40</Age>
</Personne>
</xyz:TabPersonne>
59
UDDI :Universal Description,
Discovery, and Integration
60
60
Introduction
} Même si la conjonction SOAP / WSDL permet d’invoquer des
Web Services, il était nécessaire d’ajouter une fonctionnalité de
recherche de services. Cette fonctionnalité c’est UDDI
} UDDI est une spécification définissant la manière de publier et de
découvrir les Web Services sur un réseau.
} La description du service est faite en XML selon la spécification
} Un registre UDDI peut être accédé en SOAP mais aussi en XML-
RPC ou Corba. La spécification ne limite pas l’utilisation au
Service Web.
61
Principaux fournisseurs
} IBM UDDI Registry
} Microsoft UDDI Business Registry (UBR)
} SAP UDDI Business Registry
} Systinet Registry
} Oracle Application Server UDDI Registry
62
Les pages d’UDDI
} L'annuaire UDDI est consultable de différentes manières :
} Les pages blanches comprennent la liste des entreprises ainsi
que des informations associées à ces dernières.
} Les pages jaunes recensent les services Web de chacune des
entreprises sous le standard WSDL.
} Les pages vertes fournissent des informations techniques
précises sur les services fournis. Ces informations concernent
les descriptions de services et d'information de liaison ou
encore les processus métiers associés.
63
Web Services - UDDI
} Le modèle UDDI comporte 5 structures de données
principales:
} BusinessEntity : ensemble des informations sur l’entreprise
proposant le service
} BusinessService : ensemble des informations sur les services
publiés par l’entreprise
} BindingTemplate : ensemble des informations sur le lieu
d’hébergement du service
} tModel : ensemble des informations sur le mode d’accès au
service (WSDL)
} publisherAssertion : ensemble des informations contractuelles
pour accéder au service
64
Exemple1
} Exemple Schéma BusinessEntity (pages blanches)
<element name="businessEntity" type="uddi:businessEntity" />
<complexType name="businessEntity">
<sequence>
<element ref="uddi:discoveryURLs" minOccurs="0" />
<element ref="uddi:name" maxOccurs="unbounded" />
<element ref="uddi:description" minOccurs="0" maxOccurs="unbounded" />
<element ref="uddi:contacts" minOccurs="0" />
<element ref="uddi:businessServices" minOccurs="0" />
<element ref="uddi:identifierBag" minOccurs="0" />
<element ref="uddi:categoryBag" minOccurs="0" />
</sequence>
<attribute name="businessKey" type="uddi:businessKey" use="required" />
<attribute name="operator" type="string" use="optional" />
<attribute name="authorizedName" type="string" use="optional" />
</complexType>
65
Exemple2
} Exemple Schéma BusinessService (pages jaunes)
<element name="businessService" type="uddi:businessService" />
<complexType name="businessService">
<sequence>
<element ref="uddi:name" minOccurs="0" maxOccurs="unbounded" />
<element ref="uddi:description" minOccurs="0" maxOccurs="unbounded" />
<element ref="uddi:bindingTemplates" minOccurs="0" />
<element ref="uddi:categoryBag" minOccurs="0" />
</sequence>
<attribute name="serviceKey" type="uddi:serviceKey" use="required" />
<attribute name="businessKey" type="uddi:businessKey" use="optional" />
</complexType>
66
Exemple3
} Exemple Schéma bindingTemplate (pages vertes)
<element name="bindingTemplate" type="uddi:bindingTemplate" />
<complexType name="bindingTemplate">
<sequence>
<element ref="uddi:description" minOccurs="0" maxOccurs="unbounded" />
<choice>
<element ref="uddi:accessPoint" />
<element ref="uddi:hostingRedirector" />
</choice>
<element ref="uddi:tModelInstanceDetails" />
</sequence>
<attribute name="serviceKey" type="uddi:serviceKey" use="optional" />
<attribute name="bindingKey" type="uddi:bindingKey" use="required" />
</complexType>
67
Actions - UDDI
} UDDI permet de classer et de rechercher des Services
Web.
} Un annuaire UDDI contient :
} des informations techniques (documents WSDL)
} des informations à caractère général sur une entreprise
} Deux grandes familles d’actions sur un annuaire UDDI
} Publier un service
} Rechercher un service
68
Recherche - UDDI
} Primitives de recherche
} find_binding : récupère la liaison du service considéré.
} find_business : récupère l’identité de l’entreprise productrice du Web Service.
} find_relatedbusiness : récupère la liste des entreprises étant reliées (filiale,
département, partenaire, …) à l’entreprise productrice du Web Service.
} find_service : récupère la définition du service.
} find_tmodel : récupère le modèle de données associé.
} get_bindingDetail : récupère, par une liaison précédemment établie par
find_binding les champs individuels.
} get_businessDetail, get_businessDetailExt : récupère une entité
précédemment établie par find_business les attributs individuels.
} get_serviceDetail : récupère un service précédemment établi par find_service
les attributs individuels du service (prototypes des méthodes).
} get_tmodelDetail : récupère un modèle établie par find_tmodel les champs
individuels.
69
Publication- UDDI
} Primitives de publication
} save et delete : manipulation de service dans l’annuaire
} get_authToken et discard_authToken : Authentification des
commandes par jeton
} joint_ventures : Ajout de relations inter entreprises
70