Share via


Utilisation d'une session SOAP

Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.

Pour qu'une demande SOAP s'exécute dans le contexte d'une session existante, elle doit spécifier les éléments suivants au serveur :

  • Le même numéro d'identification de session que celui qui a été fourni précédemment par le serveur au client.

  • L'identificateur du point de terminaison HTTP correspondant où la session SOAP a initialement débuté.

  • Le même contexte utilisateur. Il peut s'agir d'un utilisateur Windows ou SQL Server, selon le LOGIN_TYPE pris en charge dans les propriétés SOAP pour le point de terminaison.

Si l'identificateur de session spécifié n'existe pas ou s'il n'est pas formulé correctement, un message d'erreur SOAP est retourné avec un élément sqlSession dans l'en-tête, doté de l'attribut terminate. Sinon, le serveur répond en renvoyant en écho le même en-tête sqlSession que le client a envoyé dans sa demande.

Si la demande est exécutée sous un autre contexte de sécurité ou point de terminaison que celui qui a lancé la session, une erreur SOAP est retournée. Dans la réponse, le code d'erreur SOAP pour la terminaison de couche SOAP sera spécifié et dans l'en-tête sqlSession, l'attribut terminate sera inclus avec la valeur true.

De plus, pour empêcher un utilisateur malveillant de déterminer qu'une session existe, l'attribut terminate est défini et une erreur SOAP est retournée par le serveur comme unique message de réponse à toute demande dans laquelle la session identifiée pour une inscription est inconnue du serveur.

Exemple

L'exemple suivant montre l'inscription d'une session SOAP. Vous y voyez le format du message SOAP qu'un client envoie lors d'une demande d'inscription dans une session SOAP existante. Notez que la véritable valeur sessionId sera un identificateur spécifique à la session.

<SOAP-ENV:Header
  xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
  xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
    <!-- enlist in an existing session --><sqloptions:sqlSession sessionId="AAAAADreaLE="/>
</SOAP-ENV:Header>

Le serveur renvoie le message au client pour indiquer que la session est accessible ou bien il retourne une erreur SOAP au client si la session identifiée dans la demande est inaccessible.