2010-11-04 7 views
8

Tengo un archivo ejecutable bajo el contexto del usuario que ha iniciado sesión. El exe utiliza WCF para convertirse en un servidor de pipa llamado (lo llamarán varios clientes).Permisos mínimos del sistema operativo necesarios para crear canalizaciones con nombre (WCF)

¿El usuario necesita un permiso específico para que el exe pueda crear el conducto con nombre? Intenté ejecutar como un usuario con permisos bastante mínimos (es decir, solo en el grupo de usuarios locales), y esto funciona bien, pero me preocupa que cuando despliegue en el sitio de los clientes, los usuarios puedan verse limitados de alguna manera que significa que la creación de tubería con nombre no funciona.

Respuesta

15

No se requieren permisos especiales para que un usuario con sesión iniciada localmente configure el final del servicio de un servicio WCF utilizando el enlace netNamedPipe.

Sin embargo, debe preocuparse si los clientes pueden encontrar y conectarse al servicio. Hay dos aspectos a esto:

  1. Los clientes deben ejecutar en un contexto de seguridad que es no establecido por un inicio de sesión de red (como la suplantación de un usuario remoto en una aplicación web). Esto se debe a que WCF niega el acceso a cualquier inicio de sesión que sea miembro del grupo de USUARIOS DE RED.
  2. Si está ejecutando en Vista o Windows 7, el servicio exe deberá ejecutarse con el privilegio SeCreateGlobalPrivilege si desea que el servicio sea accesible para clientes que se ejecutan fuera de la sesión del usuario conectado. Esto se debe a que el servicio WCF debe publicar el nombre de la tubería en un objeto de memoria compartida para permitir que los clientes lo encuentren: si la pila de servicios WCF puede crear este objeto de memoria compartida en el espacio de nombres Global (visible para todas las sesiones de inicio de sesión). Pero si no tiene los privilegios necesarios, crea el objeto de memoria compartida en el espacio de nombres Local (visible solo dentro de la misma sesión de inicio de sesión). La implementación del servicio WCF como un servicio de Windows es la única forma fácil de ejecutarlo con este privilegio y, por lo tanto, es visible para los clientes que se encuentran fuera de su sesión.

Más detalles here si usted está interesado.

+0

Gracias @Chris, excelente respuesta e información realmente útil. Entonces, presumiblemente, siempre y cuando tanto el Cliente como el Servidor se estén ejecutando en la sesión de los usuarios que hayan iniciado sesión, ¿no debería haber problemas de permisos? –

+0

@Paul Nearney: Eso es correcto. –

+3

Me encuentro con una situación similar pero tengo dos procesos ejecutándose bajo la misma sesión de usuario, pero no puedo conectarme cuando es un usuario que no es administrador en Windows 7. Me pregunto si debo especificar algo especial. hacer que cree el objeto en el espacio de nombres Local? – jpierson

Cuestiones relacionadas