Services web REST (SW REST)

 

Elément requis

Version

Harmony

> Harmony 405

IIS

> 7.5 (WServer 2008, W7)





Comment mettre en oeuvre des services web en mode REST pour permettre a des applications extérieures de communiquer avec l'ERP avec ou sans certificat SSL.

Le service web REST servira au service web standard REST et à l'API RecordSql REST



L'appel en mode REST permet une couche d’authentification et un format de l’enveloppe en JSON.

Installation On Premise

Lancer Harmony, choisir le menu Administration / Installation serveur client léger web



Cocher les cases suivantes et valider



Cette action installe le service REST dans le gestionnaire Microsoft IIS.



Contrôler par le bouton 'Ouvrir la console IIS' la console IIS qui doit permettre de déployer le dossier virtuel DhsDivaltoServiceDivaApiRest



Les objets windows (fichiers DLL) et le paramétrage (fichiers XML) sont installés par exemple dans C:\divalto\Internet\DhsDivaltoServiceDivaApiRest



L'URL est sous la forme http://localhost:8080/DhsDivaltoServiceDivaApiRest/api/v1/WebService/Execute

ou http://localhost:8080/DhsDivaltoServiceDivaApiRest/api/v1/RecordSql/Execute

Gestion de droits windows

Les appels entrants par service web REST passent par une authentification préalable. Le compte utilisateur windows est donc indiqué par l'appelant

Installation Cloud

L'installation en mode cloud est déjà effective.



Chaque environnement dispose de cette fonctionnalité par défaut avec une adresse de connexion dédiée au service :

https://api.divaltocloud.com/[NUMEROSITE]/[ENVIRONNEMENT]/api/v1/

Vous devez substituer [NUMEROSITE] par le numéro de votre site client ainsi que [ENVIRONNEMENT] par le nom de l’environnement que vous souhaitez exploiter.

Ce protocole se base sur des échanges HTTPS au format JSON.



Certificat

Par défaut le dialogue se fait en mode http, mais il est possible de sécuriser avec un certificat pour installer une liaison https. Nécessite un fichier certificat SSL.

Pour passer en certificat SSL, il faut modifier la liaison de la racine de site avec un fichier certificat.



Choisir la racine du site et le modifier les liaisons pour choisir le type HTTPS avec certificat

Cet écran permet de voir les liaisons déjà existantes, par exemple HTTP sur port 8080



Paramétrage REST

Le paramétrage des services web REST se fait dans les fichiers qui sont dans le dossier de travail divalto IIS, par exemple C:\divalto\Internet\DhsDivaltoServiceDivaApiRest

Multi-service

Le service web Rest sait gérer plusieurs environnement, soit via le demandeur, soit via le paramétrage côté serveur. La méthode standard est de passer par le demandeur lors de la phase d’authentification 2 Authentification en indiquant l’environnement souhaité.

Il est aussi possible de configurer plusieurs services web en répliquant les dossiers de travail et dossiers virtuels IIS, de la même manière qu'un service SOAP. Ce sujet est abordé dans les formations d'installation Infinity ou dans le paramétrage SOAP.



Paramétrage du service web RecordSql

Il y a deux fichiers qui permettent le paramétrage système du service web RecordSql natif REST

  • DhsDivaltoServiceDivaApiRest_ListDHOQ.xml : pour la liste des RecordSql autorisés

  • DhsDivaltoServiceDivaApiRest_ParamERP : n'est pas exploité pour le moment



Voir le chapitre concernant le service web RecordSql natif REST pour plus de détails.



Paramétrage des services web REST

Il y a deux fichiers qui permettent le paramétrage système des services web REST

  • DhsDivaltoServiceDivaApiRest_ParamSystem.xml : options système concernant le traitement (cache, debug, sécurité)

  • DhsDivaltoServiceDivaApiRest_ListENV.xml : n'est pas exploité pour le moment



Le fichier DhsDivaltoServiceDivaApiRest_ParamSystem.xml indique les options du traitement des appels REST.



DhsDivaltoServiceDivaApiRest_ParamSystem.xml
<?xml version="1.0" encoding="utf-8"?> <params> <options> <!-- <debug Value="0" /> --> <!-- <modelogonuser Value="2" /> --> <!-- <ReloadCacheUser Value="30" /> --> <!-- <FreeCacheUser Value="30" /> --> <!-- <ReloadCacheDHOQ Value="30 /> --> <!-- <MaxRecordInCount Value="1000" /> --> <!-- <ReloadCacheDomaineInError Value="5" /> --> <!-- <LimitValidToken Value="30" /> --> <!-- <FreeInstanceRecordSQL Value="30" /> --> <!-- <ControlFree Value="30" /> --> <!-- <ReloadCacheEnv Value="30" /> --> <!-- <ReloadCacheDico Value="30" /> --> <!-- <Domaine Value="xxx" Forcer="0" /> --> <!-- <Env Value="xxx" Forcer="0" /> --> </options> </params>



Les options liées au service web REST en général sont les suivantes

Balise OPTIONS

Description

Valeurs

 indique celle a utiliser par défaut)

Debug

Mode debug

0 = sans 

1=avec

Permet d’écrire des informations de debug dans le fichier EventRest.log stocké dans le chemin DivaltoLog, par exemple c:\divalto\divaltolog\



ModeLogonUser

Mode logon

2  = LOGON32_LOGON_INTERACTIVE 

4 = LOGON32_LOGON_BATCH

Permet d’indiquer une option dans la fonction LogonUser de windows qui lui indique comment doit se comporter l’impersonation, et en particulier si elle doit être ‘transmise’ au processus sql client qui peut se trouver sur une autre machine.

La valeur 4 pour LOGON32_LOGON_BATCH ne fonctionne pas toujours



ReloadCacheUser

Cache utilisateurs : rechargement

Nombre (minutes)

30 

On recherche les paramètres d’un utilisateur toutes les n minutes, pour prendre en compte les modifications des autorisations des applications et des confidentialités



FreeCacheUser

Cache utilisateurs : libération

Nombre (minutes)

30

On libère le cache d’un utilisateur s’il n’est plus utilisé pendant n minutes



ReloadCacheDomaineInError

Cache erreur active directory

Nombre (minutes)

5

Quand il y a une erreur sur un utilisateur qui n’existe pas dans active directory, l'information (utilisateur inconnu) est conservée pendant n minutes ce qui permet de ne pas accéder à active directory en permanence. Pemet d'éviter une saturation du serveur REST lors des demandes de token sur des utilisateurs inconnus.



LimitValidToken

Durée du token

Nombre (minutes)

30



Domaine

Authentification : domaine

Nom du domaine



suivi de

Forcer="0" ou "1"





Remarque : concernant les délais par défaut proposés à 30 minutes, il s'agit de le faire suffisamment souvent pour actualiser les ressources et les caches, mais pas trop souvent pour consacrer les temps CPU au traitement des demandes de services web et non pas à la relecture et rechargement des paramètres et cache mémoire.







Paramétrage avancé du serveur IIS

Le serveur HTTP Microsoft IIS permet du paramétrage avancé. Consultez la documentation Microsoft en ligne pour plus d'informations.

Limites de taille ou durée des requêtes

Il y a notamment la possibilité de modifier les limites de traitements des requêtes HTTP dans le fichier WEB.CONFIG situé dans le dossier de gestion IIS.

Par exemple C:\divalto\Internet\DhsDivaltoServiceDivaApiRest sur un poste local, dans la section <system.web> sur les attributs de la propriété httpRuntime

maxRequestLength

The property maxRequestLength indicates the maximum file upload size supported by ASP.NET. This limit can be used to prevent denial of service attacks caused by users posting large files to the server. The size specified is in kilobytes. The default is 4096 KB (4 MB) Max. value 2147483647 KB (2 TB). MSDN

executionTimeout

The executionTimeout attribute defines the maximum amount of time in seconds that a request is allowed to run before it is automatically terminated by ASP.NET. The default value is 90 seconds.

 

Une autre méthode est décrite ici Request Limits <requestLimits> et consiste à ajouter à ajouter une section <security> et à mettre en oeuvre les requestLimits via l’attribut maxAllowedContentLength

 

 

Pré-chargement et pré-actif

Il est possible de paramétrer l'application IIS en "Préchargement" (preloadEnabled) et aussi en toujours actif (AlwaysRunning)

  • Cela consomme des ressources complémentaires (mémoire) mais éviter le temps de "réveil" du WebService

  • C'est un sujet MS Windows (indépendant d'Harmony), mais qui permet de petits gains pour les "premiers" appels aux WebServices