Problema: Un Web Service che lancia un eseguibile

giovedì 13 marzo 2008 - 17.42

Nenzi Profilo | Newbie

Salve, per la prima volta dopo anni di lettura ho pensato di scrivervi perchè ho un problema che proprio non riesco a risolvere. Mi rendo anche conto che leggere il testo sottostante è una bella rottura di scatole...ma volevo fornire informazioni dettagliate:

Ho creato un Web Service e un AppPool con l'identity che punta ad un account admin locale (che fa anche parte del gruppo IIS_WPG) che chiamerò 'serviceaccount' .
Questo perchè il WS lancia psexec.exe (di Sysinternals) che a sua volta manda in esecuzione un agent su delle macchine remote; io poi ne trappo lo stream di output per avere il dato finale.Ho quindi bisogno dei permessi di esecuzione per l'eseguibile di Sysinternals.

Tutto funziona a meraviglia, tranne per un piccolo dettaglio: Il Web Service funziona solo se ci si logga (anche con i TermServ) sulla macchina che hosta il WS con l'utenza 'serviceaccount' , altrimenti il WS rimane appeso all'infinito. Basta solo fare la login e magicamente il WS comincia a funzionare

Fra le varie cose che ho già settato:
1. Il mio application pool è settato di default tranne che per l'identità che è appunto 'serviceaccount';

2. Ho modificato le seguenti policy di sicurezza per 'serviceaccount':
- Replace a Process Level Token (SeAssignPrimaryTokenPrivilege)
- Adjust Memory Quotas for a process (SeIncreaseQuotaPrivilege)
- Generate Security Audits (SeAuditPrivilege)
- Bypass Traverse Checking (SeChangeNotifyPrivilege)
- Access this computer from a network (SeNetworkLogonRight)
- Logon as a Batch Job (SeBatchLogonRight)
- Logon as a Service (SeInteractiveLogonRight)
- Allow Logon Locally (SeInteractiveLogonRight);

3.Ho settato la dir virtuale che contiene il WS per permettere anche al gruppo IIS_WPG il Full Control;

4. Ho provato psexec specificando le credenziali di accesso per l'utente serviceaccount (che è amministratore su tutte le nostre macchine locale e di dominio), e cmq i vari test fatti a console con psexec sono sempre andati bene.

Insomma sono 4 settimane che leggo in giro ma francamente una cosa così strana (per me) non so proprio come risolverla.

Uso win 2003 server edition sp2
IIS 6.0
Fw 2.0
psexec di sysinternal

Spero di avervi esposto chiaramente il problema, perdonatemi per la mia mancanze nell'uso del gergo. Grazie

us01739 Profilo | Expert

Prova ad utilizzare un sistema di "Impersonate" prima di eseguire il codice
Qui trovi qualche indicazione:
http://www.dotnet247.com/247reference/msgs/44/222180.aspx
http://support.microsoft.com/default.aspx/kb/306158/it
Bye Bye

---------------------------------------------------
Roberto Gelmini - MCDBA - MCP
http://www.robertogelmini.com
---------------------------------------------------

Nenzi Profilo | Newbie

Ciao in realtà dovrei già impersonare l'utente serviceaccount utilizzando la sua identity nell'application pool che ho creato apposta per fare girare questo WebService. Infatti nelle varie prove, mi sono anche fatto restituire il nome dell'utente utilizzato dal WebService a video ed è quello giusto (serviceaccount).
Ho già provato 'ad muzzum' ad inserire nel web.config la stringa di impersonate (con e senza credenziali di accesso)...ma l'effetto non cambia.

Ciò che in realtà non riesco a fare e di utilizzare un utente normale come un utente di servizio come ad es. network service...
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5