J'ai une application Web déployée dans un fournisseur d'hébergement Internet. Cette application web consomme un service WCF déployé sur un serveur IIS situé sur le serveur d'application de mon entreprise, afin d'avoir accès à la base de données de l'entreprise, les gars du réseau m'ont permis d'exposer ce service via un firewall. Un diagramme ressemblerait à ceci. Je voulais également utiliser wsHttpBinding pour tirer parti de ses fonctions de sécurité et crypter des informations sensibles.Problème intéressant avec WCF wsHttpBinding à travers un pare-feu
après l'avoir essayé, je reçois l'erreur suivante:
Exception Details: System.ServiceModel.EndpointNotFoundException: The message with To 'http://:/service/WCFService.svc' cannot be processed at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher. Check that the sender and receiver's EndpointAddresses agree.
Faire quelques recherches, j'ai découvert que wsHttpBinding utilise WS-Addressing normes, et la lecture de cette norme j'ai appris que l'en-tête SOAP est amélioré pour inclure des balises telles que 'MessageID', 'ReplyTo', 'Action' et 'To'. Étant donné que le point de terminaison de l'application cliente spécifie l'adresse IP et le port du pare-feu et que le service répond avec son adresse réseau interne différente de celle du pare-feu, l'adressage WS déclenche le message ci-dessus. Ce que je pense c'est une très bonne mesure de sécurité, mais ce n'est pas très utile dans mon scénario.
Citant le WS-Addressing soumission norme (http://www.w3.org/Submission/ws-addressing/)
"Due to the range of network technologies currently in wide-spread use (e.g., NAT, DHCP, firewalls), many deployments cannot assign a meaningful global URI to a given endpoint. To allow these ‘anonymous’ endpoints to initiate message exchange patterns and receive replies, WS-Addressing defines the following well-known URI for use by endpoints that cannot have a stable, resolvable URI. http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous "
Comment puis-je configurer mon wsHttpBinding Endpoint pour adresser mon IP de pare-feu et d'ignorer ou contourner l'adresse indiquée dans les 'To' WS-Addressing tag dans l'en-tête du message SOAP? Ou dois-je modifier quelque chose dans la configuration de mon point de terminaison de service?
Une aide et des conseils seront très appréciés.
Marko.
P.S .: Alors que je trouve une solution à cela, j'utilise basicHttpBinding avec absolument aucun problème bien sûr.
+1 - Cependant, je ne comprends toujours pas comment cela fonctionnera pour les services déployés sur plusieurs serveurs derrière Load Balancers. Je suis passé par ce grand poste de vous déjà http://www.devproconnections.com/article/net-framework2/wcf-and-ssl-processing-load-balancers-122238 – VoodooChild
Ceci est la bonne façon de le faire. Votre administrateur réseau doit diriger les demandes du pare-feu vers le serveur sur lequel votre service est hébergé et vous devez définir listenUri dans le fichier web.config pour répondre aux demandes dirigées. J'ai de nombreux services hébergés sur plusieurs serveurs avec des équilibreurs de charge configurés comme ça. Cette configuration fonctionne également avec les terminateurs SSL. –