Come "associare" servizi a canali specifici (tcp, http, ipc) in un server remoto .NET?

StackOverflow https://stackoverflow.com/questions/234067

  •  04-07-2019
  •  | 
  •  

Domanda

Ho un'app server .NET Remoting complessa che fornisce un paio di servizi. I clienti possono attualmente utilizzare i canali tcp e http per connettersi al server.

Ora devo implementare alcuni nuovi servizi di amministrazione, ma voglio limitare la loro disponibilità al computer locale, ovvero voglio creare uno strumento di amministrazione in grado di utilizzare questi nuovi servizi, ma non voglio che i dati sensibili vadano fisicamente il server, quindi devo limitare l'esecuzione dello strumento di amministrazione sullo stesso computer server.

Ho pensato di aggiungere i nuovi servizi e anche di registrare il canale ipc con il server per l'utilizzo da parte dello strumento di amministrazione. Ora arriva il problema: come posso impedire ai client remoti di connettersi a questi nuovi servizi di amministrazione usando il canale tcp o http? Posso dire qualcosa del tipo "servizio di registrazione x, implementato dalla classe C nell'assemblaggio A, utilizzabile solo tramite ipc", servizio di registrazione "y, implementato dalla classe D nell'assemblaggio A, utilizzabile tramite tcp / http " in app.config (o usando le classi dell'infrastruttura remota)?

È il "utilizzabile solo tramite ipc" parte che mi sconcerta. (E no, il porting su WCF non è un'opzione in questo momento.)

È stato utile?

Soluzione

Non ci sono sovraccarichi per RegisterWellKnownServiceType che ti consentono di specificare su quale canale registrarsi, né ci sono metodi su IPCServerChannel per registrare un servizio, quindi nessuno di questi funzionerà.

Il meglio che mi viene in mente è scrivere un ChannelSink che filtra i tuoi messaggi o fornisce sicurezza. Questi possono essere aggiunti al costruttore di TcpChannel e HttpChannel per filtrare solo le chiamate di amministrazione.

Altri suggerimenti

Ottieni l'indirizzo IP del servizio chiamandolo. Se è diverso da 127.0.0.1, rifiuta la chiamata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top