2010-11-04 17 views
8

Ho un exe che viene eseguito nel contesto dell'utente connesso. L'exe usa WCF per farsi un pipe server chiamato (verrà chiamato da più client).Sistema operativo minimo Autorizzazioni necessarie per creare named pipe (WCF)

L'utente ha bisogno di un permesso specifico per l'exe per poter creare la named pipe? Ho provato a correre come utente con autorizzazioni abbastanza minime (cioè solo nel gruppo locale Users), e questo funziona benissimo - ma sono preoccupato che quando lo distribuisco sul sito dei clienti, gli utenti potrebbero essere limitati in qualche modo significa che la creazione della named pipe non funziona.

risposta

15

Per un utente connesso localmente non sono necessarie autorizzazioni speciali per impostare il servizio di un servizio WCF utilizzando il binding netNamedPipe.

Tuttavia, è necessario preoccuparsi se i client possono trovare e connettersi al servizio. Ci sono due aspetti:

  1. I clienti devono essere in esecuzione in un contesto di sicurezza che è non stabilito da un accesso alla rete (come ad esempio la rappresentazione di un utente remoto in un'applicazione web). Questo perché WCF nega l'accesso a qualsiasi accesso membro del gruppo NETWORK USERS.
  2. Se si esegue Vista o Windows 7, è necessario che il servizio exe sia in esecuzione con il privilegio SeCreateGlobalPrivilege se si desidera che il servizio sia accessibile ai client in esecuzione all'esterno della sessione dell'utente connesso. Questo perché il servizio WCF deve pubblicare il nome del pipe su un oggetto di memoria condiviso per consentire ai client di trovarlo: se lo stack del servizio WCF può creare questo oggetto di memoria condivisa nello spazio dei nomi Global (visibile a tutte le sessioni di accesso), lo farà. Ma se non dispone dei privilegi necessari, crea l'oggetto memoria condivisa nello spazio dei nomi Locale (visibile solo all'interno della stessa sessione di accesso). La distribuzione del servizio WCF come servizio Windows è l'unico modo semplice per farlo funzionare con questo privilegio e quindi visibile ai client al di fuori della sua sessione.

Maggiori dettagli here se siete interessati.

+0

Grazie a @Chris, ottima risposta e informazioni davvero utili da avere. Quindi, presumibilmente, fintanto che sia Client sia Server sono in esecuzione nella sessione degli utenti connessi, non dovrebbero esserci problemi di permessi? –

+0

@Paul Nearney: Esatto. –

+3

Mi trovo in una situazione simile ma ho due processi in esecuzione nella stessa sessione utente, ma non riesco a connettermi quando si tratta di un utente non amministratore su Windows 7. Mi chiedo se devo specificare qualcosa di speciale per farlo creare l'oggetto nello spazio dei nomi Locale? – jpierson

Problemi correlati