2010-03-29 7 views
0

Je suis sur le point de développer un service pour un client. Le service sera situé sur l'intranet derrière les pare-feu et aura sa propre base de données. Le service sera consommé par une autre application Web située sur la DMZ. Maintenant, mon problème est que la compagnie a une sorte de politique stricte de ne pas ouvrir de ports de DMZ dans l'intranet.Accéder au service WCF derrière le pare-feu de DMZ

1) Est-il possible que mon application Web sur la zone démilitarisée accède à un service WCF sur l'intranet sans ouvrir un port? 2) Dans la négative, existe-t-il une architecture de référence décrivant que l'ouverture d'un port peut être effectuée tout en conservant une solution sûre? Peut-être combiné avec des certificats, une sorte d'athorisation etc. Il n'y a pas besoin d'autre application pour consommer le service (du moins pas pour l'instant), donc il est correct d'avoir une configuration qui limite les consommateurs à cette seule application web.

Meilleures salutations /Valle

Répondre

1

je devais « affiner » ma réponse précédente un peu, en supprimant tout :)

Alors, voici le court, meilleure version de celui-ci. Pas le meilleur, mais ça marche plutôt bien. Pour simplifier l'explication, considérons que vous avez un seul service et un client qui veut le consommer.

  1. ajouter une application de serveur proxy qui fonctionne en dehors du pare-feu et expose 2 services:
    le premier est identique au service d'origine (même adresse, reliure, contrat)
    le second est un service recto verso a comme rappel le même contrat du service ci-dessus
  2. ajouter une application client proxy qui s'exécute dans le pare-feu et consomme le deuxième service du serveur proxy et aussi le service d'origine
  3. le client d'origine utilisera le serveur proxy à la place du service original

Comment ça marche:

  1. le client proxy se connecte au serveur proxy et enregistrer le rappel
  2. le client proxy se connecte également au service d'origine
  3. le client d'origine se connecte au service proxy
  4. le serveur proxy transmet tous les appels du service au rappel (rappelez-vous que les contrats sont les mêmes)
  5. le client proxy transmet tous les les appels de la mise en œuvre de rappel au client du service d'origine (encore une fois les contrats sont les mêmes)
  6. le processus de service d'origine l'appel et renvoie le résultat
  7. les réponses sont de retour transmis dans l'ordre inverse au client d'origine

Notez que le client d'origine n'a aucune idée qu'il se connecte au serveur proxy au lieu du service d'origine

Une autre note est que la transmission se produit dans le code qui est pas très agréable. Le WCF dans .NET 4.0 a le support de routage mais je ne suis pas sûr que vous pouvez router seulement le canal de rappel et pas aussi le direct.

Espérons que ça aide, Gicanu

Questions connexes