Webservice et site web ont la particularité de permettre l'exécution de traitements sur une machine serveur, avec comme point d'entrée une requête Http :
- dans le cas d'un site Web, un navigateur (Chrome, Safari, Internet Explorer...) demande à partir d'une adresse http://serveur/... l'exécution du code serveur d'un site. Ce code une fois terminé retourne une page HTML affichée par le navigateur à l'origine de la demande.
- dans le cas d'un Webservice, un programme quelconque demande à partir d'une requête http://serveur/.soap... l'exécution d'un traitement d'une procédure, qui retourne généralement un résultat.
Il est possible de réaliser tout type de traitements(*) dans le code serveur d'un site Web, ou dans les procédures d'un Webservice. Mais il faut être vigilant dès qu'il s'agit d'accéder à :
- d'autres machines reliées au serveur qui héberge le site (serveurs de données),
- des périphériques connectés au serveur (imprimantes le plus souvent),
- d'autres applications, services installés sur le serveur : pilote d'accès à une base de données, application installée, certificat, ...
En effet, le fait qu'un traitement soit lancé au départ par un appel du serveur Web, va faire que les droits d'exécution en cours seront ceux d'un utilisateur dédié au serveur Web, et non pas ceux dont vous disposez en travaillant directement sur le serveur (après une ouverture de session, ou en bureau distant, Tse...). Il y a deux ordinateurs dans un :
- celui que vous utilisez après l'ouverture d'une session avec un utilisateur Windows donné,
- celui qu'utilise le serveur Web dès qu'il lance un traitement : droit d'accès restreints.
C'est généralement un "invité internet" (IUSR...) qui est utilisé par défaut.
Par exemple avec un exécutable WINDEV sur un serveur il sera possible d'imprimer, mais le même code d'impression dans un Webservice n'aura pas accès aux imprimantes. De la même manière, à partir d'un exécutable WINDEV il sera possible de se connecter à une base de données quelconque placée sur un autre serveur, mais ça ne sera pas le cas depuis un site Web.
D'autres billets abordent déjà ce thème et les réglages permettant d'étendre les possibilités des traitements lancés depuis le serveur Web :
Ce billet ne fait donc que rappeler ce point très important, que l'on retrouve de façon identique pour l'exécution d'un traitement depuis un service Windows, une tâche planifiée...
|