¿Cómo "enlazar" servicios a canales específicos (tcp, http, ipc) en un servidor .NET Remoting?

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

  •  04-07-2019
  •  | 
  •  

Pregunta

Tengo una aplicación compleja de servidor .NET Remoting que proporciona un par de servicios. Los clientes pueden usar actualmente los canales tcp y http para conectarse al servidor.

Ahora necesito implementar algunos nuevos servicios de administración, pero quiero restringir su disponibilidad a la máquina local, es decir, quiero crear una herramienta de administración que pueda usar estos nuevos servicios, pero no quiero que los datos confidenciales se vayan físicamente el servidor, así que necesito restringir la ejecución de la herramienta de administración en la misma computadora servidor.

Pensé en agregar los nuevos servicios y también registrar el canal de IPC con el servidor para que lo use la herramienta de administración. Ahora viene el problema: ¿cómo puedo evitar que los clientes remotos se conecten a estos nuevos servicios de administración utilizando el canal tcp o http? ¿Puedo decir algo así como el "servicio de registro x, implementado por la clase C en el ensamblaje A, que solo se puede usar a través de ipc", el servicio de registro y, implementado por la clase D en el ensamblaje A, que se puede usar a través de tcp / http " en app.config (o usando clases de infraestructura remota)?

Es el '' utilizable solo a través de ipc '' Parte que me desconcierta. (Y no, portar a WCF no es una opción en este momento).

¿Fue útil?

Solución

No hay sobrecargas para RegisterWellKnownServiceType que le permitan especificar en qué canal registrarse, ni hay métodos en el canal IPCServer para registrar un servicio, por lo que nada de eso funcionará.

Lo mejor que se me ocurre es escribir un ChannelSink que filtre sus mensajes o le brinde seguridad. Se pueden agregar al constructor de su TcpChannel y HttpChannel para filtrar las llamadas de solo administrador.

Otros consejos

Obtenga la dirección IP del servicio que lo llama. Si no es 127.0.0.1, rechace la llamada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top