locked
Web Service Reverse Proxy RRS feed

  • Frage

  • Hallo :)

    ich hab mal ne Frage an euch, ich bin gerade dabei einen "reverse proxy" für einen WebService zu entwickeln bzw. ich teste und teste aber bekomm es nicht hin.
    Hintergrund ist ich möchte eine Umgebung bereitstellen, die dem Exchange Edge Server gleicht. Das heißt der WebService steht innerhalb eine CorporatedNetworks (Domain) und ist über Netzwerk erreichbar. Nun soll dieser auch von aussen erreichbar sein und das möchte ich über einen reverse proxy (wie der EDGE server) auf einem getrennten Rechner innerhalb einer DMZ lösen. Der dann alle Requests und Responses jeweils zwischen Client und Server hin und her sendet.

    Versucht habe ich bisher folgendes:

    1. Habe versucht ein TcpListener dazwischen zuklemmen der alle Request auf einem Port abfängt und diese an den WebService (NetTcpBinding) weiterleitet und auf Response vom WebService wartet um diese dann an den Client zu senden. Das funktioniert auch rein technisch, allerdings bricht der Client die Verbindung sofort wenn er die erste Anwort erhält ab da er merkt das im SOAP header nicht er als Ziel steht sondern der reverse proxy. Auf diesem Wege komm ich also nicht über die Anmeldung herraus.

    1. Habe ich versucht einen Http reverse proxy dazwischen zu klemmen und das ganze über WSHttpBinding zu lösen. Das heißt in der Webconfig:

    <httpHandlers>
    
          <add verb="*" path="*" type="ReverseProxyLibrary.ReverseProxy"/>
    
    </httpHandlers>
    
    

    und dann alle Request auf den eigendlichen Webservice umlenken. Das klappt im Browser auch super ich ruf meinen Proxy auf und bekommen das WebInterface den Webservice angezeigt. Das Problem ist nun das der WebService natürlich in seine SOAP Definitionen (*?wsdl usw.) seinen Port schreibt und das ganze auch nicht so wirklich funktioniert. Wenn ich beide auf den selben Port laufen lasse (den Proxy auf Rechner A und den Service auf Rechner B) kann ich zwar über Vsual Studio den Dienst als Referenz hinzufügen VS erstellet dann auch seine WebServiceProxy Klasse korrekt, allerdings ist das nicht das Ziel das beide auf dem selben Port laufen müssen zweitens klappt ein echter Request an den Service trotzdem nicht.

    Ich wäre euch echt dankbar wenn ihr mir einen Anstoß bzw. ein Pattern oder eine Beispiel Implementation für einen "WCF WebService Reverse Proxy" geben könntet.

    Vielen Dank im Vorraus

    Steffen
    • Bearbeitet Steffen Mangold Mittwoch, 7. April 2010 19:11 kleine Rechtschreibfehler
    Mittwoch, 7. April 2010 19:10