Adaptateur d’envoi SOAP
Vous utilisez l'adaptateur d'envoi SOAP pour appeler un service Web. L'adaptateur d'envoi SOAP lit le contexte du message sur l'objet de message BizTalk afin d'obtenir le nom du proxy et appelle le proxy du service Web externe associé.
Authentification du client pour l'adaptateur d'envoi SOAP
L'adaptateur d'envoi SOAP s'authentifie auprès du serveur de destination à l'aide de l'un des types d'authentifications suivants :
Anonyme Paramètre par défaut.
De base. La connexion SOAP envoie le nom d'utilisateur et le mot de passe en texte clair.
Digest. La connexion SOAP envoie le nom d'utilisateur et le mot de passe dans un format chiffré.
Kerberos ou NTLM. Ni le nom d'utilisateur ni le mot de passe n'est envoyé via une connexion SOAP. L'adaptateur SOAP utilise toujours les informations d'identification du processus sous lequel l'adaptateur d'envoi SOAP s'exécute pour ce type d'authentification.
En outre, l'adaptateur d'envoi SOAP peut fournir un certificat SSL (Secure Sockets Layer) au serveur Web si le serveur le demande ou l'accepte.
Si vous avez activé Enterprise Single Sign-On (SSO), lorsque l’adaptateur d’envoi SOAP reçoit un message avec la requête à la propriété SSOTicket , l’adaptateur se connecte à un serveur d’authentification unique pour valider et utiliser le ticket. Une fois que l'adaptateur SOAP a validé le ticket, celui-ci est déchiffré et les informations d'identification pour le système associé sont récupérées dans le magasin d'informations d'identification. L'adaptateur SOAP utilise ensuite ces informations d'identification pour se connecter au système associé et la demande SOAP est traitée.
Certificats clients pour l'adaptateur d'envoi SOAP
L'adaptateur d'envoi SOAP peut établir une connexion sécurisée avec les serveurs qui acceptent ou demandent des certificats clients. Si un certificat client est spécifié, l'adaptateur d'envoi SOAP utilise le certificat lors de la connexion aux serveurs qui demandent ou acceptent des certificats clients. Si le certificat client n'est pas spécifié et que le serveur de destination demande des certificats clients, l'adaptateur d'envoi SOAP ne peut pas envoyer le message et suit la logique standard pour les nouvelles tentatives.
L’adaptateur d’envoi SOAP utilise le certificat client du magasin personnel du compte sous lequel le processus BizTalk Server est en cours d’exécution. L'adaptateur SOAP spécifie le certificat par son empreinte. Si l'adaptateur d'envoi SOAP ne peut pas charger le certificat pour une raison quelconque, le message envoyé est interrompu.
Messages d'accusé de réception négatif (NACK) générés pour les transmissions échouées par l'adaptateur HTTP ou SOAP
Lorsqu'un message est transmis avec succès, le moteur de messagerie BizTalk publie un message d'accusé de réception (ACK) associé dans la MessageBox si les accusés de réception sont activés. De même, lorsqu’un message est suspendu par le moteur de messagerie BizTalk ou qu’une orchestration est suspendue par le moteur d’orchestration, BizTalk Server publie un message de reconnaissance négative (NACK) associé dans messageBox. Le message NACK contient des propriétés de contexte et une partie du corps du message composée d’une erreur SOAP. Si le message NACK est généré en raison d’un échec de transmission à partir des adaptateurs HTTP ou SOAP, l’erreur SOAP contient l’élément Headers et l’élément Body de la réponse à partir du serveur Web de destination. Voici un exemple d'erreur SOAP dans un accusé de réception négatif généré en raison de l'échec d'une transmission SOAP :
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP:Body>
<SOAP:Fault>
<faultcode>Microsoft BizTalk Server Negative Acknowledgment</faultcode>
<faultstring>An error occurred while processing the message, refer to the details section for more information</faultstring>
<faultactor>http://localhost/receivestandard.asp</faultactor>
<detail>
<ns0:NACK Type="NACK" xmlns:ns0="http://schema.microsoft.com/BizTalk/2003/NACKMessage.xsd">
<NAckID>{4E646707-03AA-4493-95C7-A64B09E2987D}</NAckID>
<ErrorCode>0x80131600</ErrorCode>
<ErrorCategory>0</ErrorCategory>
<ErrorDescription>The remote server returned an error: (404) Not Found.</ErrorDescription>
<ErrorDetail>
<HttpErrorDetail xmlns="http://schema.microsoft.com/BizTalk/2006/HttpErrorDetails.xsd">
<Headers>Server: Microsoft-IIS/5.1 Date: Wed, 21 Apr 2005 00:27:47 GMT X-Powered-By: ASP.NET Connection: close Content-Type: text/html Content-Length: 67 </Headers>
<Body>We could not locate the page you requested. Please check the URL.</Body>
</HttpErrorDetail>
</ErrorDetail>
</ns0:NACK>
</detail>
</SOAP:Fault>
</SOAP:Body>
</SOAP:Envelope>
Notes
L’élément Headers et l’élément Body sont limités à 48 Ko. L’élément Headers est arrondi à la paire de valeurs d’en-tête complète la plus proche sans dépasser la limite. L’élément Body est tronqué à 48 Ko.
Notes
Les messages NACK et ACK sont ignorés si aucun abonnement ne correspond pour eux. Ils ne sont pas interrompus par le moteur de messagerie.
Pour vous abonner à un accusé de réception négatif, vous pouvez effectuer l'une des opérations suivantes :
Créer un port d'envoi avec un filtre pour la propriété de contexte de message appropriée. Pour obtenir la liste des propriétés du contexte de message, y compris celles liées à l’accusé de réception de message, consultez Les propriétés du contexte de message dans l’interface utilisateur et informations de référence sur l’espace de noms d’API des développeurs .
Envoyer à partir d’un port d’orchestration marqué avec Notification de remise = Transmis. Si un port d’orchestration est marqué avec Notification de remise = Transmis, l’orchestration attend qu’elle reçoive un ACK ou un NACK pour le message qui a été transmis. Si un accusé de réception négatif est généré, il est routé vers l'orchestration, qui génère une exception DeliveryFailureException. DeliveryFailureException est désérialisée à partir de l'erreur SOAP contenue dans le corps du message d'accusé de réception négatif. Pour extraire la chaîne de message d'exception de l'erreur SOAP renvoyée à l'orchestration, convertissez DeliveryFailureException en SoapException, puis accédez à InnerXml depuis la section relative aux détails SOAP. L'exemple de code suivant montre comment procéder :
// Cast the DeliveryFailureException to a SoapException… System.Web.Services.Protocols.SoapException se = (System.Web.Services.Protocols.SoapException)e.InnerException; System.Diagnostics.Trace.WriteLine(se.Detail.InnerXml); //e is an Microsoft.XLANGs.BaseTypes.DeliveryFailureException //object type created in an Exception handler
L'exemple de code précédent renvoie un fragment XML semblable à ce qui suit :
<ns0:NACK Type="NACK" xmlns:ns0="http://schema.microsoft.com/BizTalk/2003/NACKMessage.xsd"> <NAckID>{4E646707-03AA-4493-95C7-A64B09E2987D}</NAckID> <ErrorCode>0x80131600</ErrorCode> <ErrorCategory>0</ErrorCategory> <ErrorDescription>The remote server returned an error: (404) Not Found.</ErrorDescription> <ErrorDetail> <HttpErrorDetail xmlns="http://schema.microsoft.com/BizTalk/2006/HttpErrorDetails.xsd"> <Headers>Server: Microsoft-IIS/5.1 Date: Wed, 21 Apr 2005 00:27:47 GMT X-Powered-By: ASP.NET Connection: close Content-Type: text/html Content-Length: 67 </Headers> <Body>We could not locate the page you requested. Please check the URL.</Body> </HttpErrorDetail> </ErrorDetail> </ns0:NACK>
Voir aussi
Qu’est-ce que l’adaptateur SOAP ?
Recommandations de sécurité pour l’adaptateur SOAP