Eseguire un servizio WCF con privilegi minimi

di Cristian Civera, in Windows Communication Foundation,

Windows Communication Foundation è un framework per lo sviluppo di servizi che ha la particolarità di poterli esporre con uno o più binding, sfruttando diverse tipologie di protocollo e trasmissione del messaggio. I binding più comuni sono sfruttano HTTP o più in generale il TCP per trasmettere il flusso di byte. Per far sì che un servizio riceva le richieste, occorre però che questo si riservi una porta, specificata tramite l'uri, in modo da ascoltare e ricevere le connessioni.

Purtroppo questa operazione è consentita solo a processi che dispongono di diritti amministrativi e durante lo sviluppo di un servizio in genere questo non costituisce un problema, ma è comunque buona norma metterlo in produzione eseguendo il processo con credenziali di un normale utente, andando a specificare dove può accedere, sul disco e sulla rete, attraverso le ACL (Access Control List), pena la generazione di una AddressAccessDeniedException.

Per abilitare quindi un utente a riservarsi una specifica porta è possibile lanciare l'utility netsh attraverso il prompt dei comandi (eseguito con credenziali amministrativi):

netsh http add urlacl url=http://+:8001/MioServizio user=dominio\utente

Il comando sopra indicato riserva per qualsiasi host la porta 8001 per l'utente indicato. Con il comand delete in luogo di add è possibile invece rimuovere il permesso.

Da notare infine che l'URI http://+:8731/Design_Time_Addresses, utilizzato dal WCF Service Host, viene automaticamente riservato dall'installazione di Visual Studio per tutti gli utenti interattivi, per permette lo sviluppatore di testare facilmente i servizi.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi