Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si usa la configurazione condivisa di IIS 7 in un ambiente in cui le attività di provisioning del sito vengono guidate da un computer remoto, è possibile riscontrare ciò che è noto come "problema di autenticazione a doppio hop". Questo problema impedisce l'esecuzione di attività di provisioning. Questo articolo descrive il problema e fornisce soluzioni alternative.
Descrizione del problema
La topologia di provisioning illustrata nel diagramma seguente potrebbe essere un'opzione comune per sfruttare la nuova funzionalità di configurazione condivisa disponibile in IIS 7, che la configurazione è centralizzata in una condivisione di rete e un server di provisioning centralizzato eseguirà operazioni di provisioning in più server farm Web. Si presuppone che tutte le server farm Web eseguano Windows Server® 2008 R2 con IIS 7.
Topologia di provisioning tipica
La configurazione condivisa può essere abilitata facilmente tramite Gestione IIS, come illustrato nella schermata seguente.
È stato fornito un set di nuove API gestite in IIS 7 nello spazio dei nomi Microsoft.Web.Administration. Le API contengono un metodo OpenRemote, che consente l'amministrazione remota attraverso la rete, come illustrato nel diagramma seguente.
Il frammento di codice seguente illustra l'uso di OpenRemote per effettuare il provisioning di un'applicazione in un server Web diverso.
Quando la configurazione condivisa è abilitata per il server Web remoto, viene visualizzato l'errore seguente quando si esegue il codice di esempio:
Il problema non esiste se il server Web remoto usa la configurazione locale anziché la configurazione condivisa.
Disabilitare la configurazione condivisa:
Eseguire nuovamente l'applicazione di esempio:
Il commit della modifica viene eseguito correttamente.
Si tratta di un problema di autenticazione a doppio hop causato dalla configurazione condivisa tra più server. La chiamata OpenRemote è semplicemente chiamata remota all'oggetto COM tramite DCOM. Se la configurazione non è configurata in locale, l'oggetto COM tenterà di eseguire l'hop doppio che non è consentito quando si usa COM. Tenere presente che questo si verifica solo nell'operazione di scrittura nella configurazione condivisa.
Quando viene eseguita l'operazione di lettura, il sistema di configurazione della sottolineatura usa le credenziali archiviate nel file redirection.config per l'autenticazione nel server di condivisione di rete remota, che non avrà questo problema di doppio hop. Con le operazioni di scrittura, la configurazione della sottolineatura usa il token di sicurezza del chiamante per eseguire le operazioni che il token di sicurezza non è valido nel server di condivisione di rete remota.
Soluzioni alternative
Opzione 1: Modificare la configurazione DCOM per l'oggetto COM di configurazione usando un account specificato
Per risolvere il problema di doppio hop con l'oggetto COM di configurazione, è necessario modificare la configurazione DCOM in modo da usare un account specificato anziché il contesto di sicurezza del chiamante per abilitare l'autenticazione dell'oggetto COM di configurazione nel server di condivisione di rete remota con le credenziali specificate.
È possibile individuare l'oggetto COM di configurazione IIS 7 : ahadmin in Configurazione DCOM usando Servizi componenti nel server Web remoto, come illustrato nel diagramma seguente:
Fare clic con il pulsante destro del mouse sul nodo ahadmin e selezionare proprietà, selezionare la scheda Identità, modificare l'opzione In questo utente anziché l'utente di avvio e specificare un account utente con le autorizzazioni seguenti:
- Disporre delle autorizzazioni di modifica per i file di configurazione condivisi nel server di condivisione di rete.
- Disporre dell'autorizzazione di lettura per redirection.config file archiviato in system32\inetsrv\config
- Membro del gruppo administrators locale. In caso contrario, non sarà possibile decrittografare l'eccezione.
Fare clic su OK.
Dopo la modifica, eseguire di nuovo l'applicazione di esempio, funziona correttamente.
Il provisioning dell'applicazione di test viene eseguito correttamente.
L'uso di un account specificato per l'oggetto COM di configurazione potrebbe esporre rischi di sicurezza aggiuntivi, ad esempio qualsiasi utente potrebbe modificare la configurazione purché disponga dell'autorizzazione per richiamare l'oggetto COM. Per ridurre i rischi di sicurezza, configurare un solo server Web nella server farm Web usando questa opzione per il provisioning e configurare il firewall per consentire solo a determinati IP di accedere al server.
**Avviso di sicurezza**
Questo approccio può consentire a un non amministratore di apportare modifiche a livello amministrativo nel server, poiché il componente non verrà eseguito nel contesto di sicurezza del chiamante.
Opzione 2: Uso di un approccio di esempio di Servizi di hosting
Un'opzione alternativa non prevede l'uso di OpenRemote tramite chiamata DCOM e la creazione di un servizio come l'esempio di codice dei servizi di hosting, ovvero un set di servizi Web basati su WCF (Windows Communication Foundation), in uno dei server Web della web farm, come illustrato nel diagramma seguente:
È possibile usare il servizio Windows per ospitare i servizi in caso di problemi di hosting in IIS 7. Il servizio Web si basa sulle API Microsoft.Web.Administration e offre un'opzione di integrazione migliore e non è necessario aprire il firewall come richiesto da OpenRemote.
Considerazioni sulla sicurezza
Il servizio deve essere protetto per consentire solo agli utenti autorizzati e autenticati di chiamare il servizio.
Opzione 3: Uso di WMI
Un'altra opzione per evitare il problema di doppio hop consiste nell'usare il servizio WMI, come illustrato nel diagramma seguente.
Il servizio WMI ha la possibilità di specificare le credenziali per la connessione al server Web remoto, il servizio WMI nel server remoto rappresenta l'identità durante l'esecuzione dell'opzione di provisioning, come illustrato nel frammento di codice seguente. Per abilitare le operazioni che utilizzano la configurazione condivisa, è necessario specificare l'opzione di rappresentazione durante la connessione a WMI nel server remoto. WMI richiede anche alcune porte aperte nel firewall per la chiamata remota.