Condividi tramite


Configurazione condivisa e provisioning remoto

di Walter Oliver

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.

Diagramma che mostra i collegamenti tra server di provisioning, server farm Web e configurazione condivisa di condivisione di rete. Condivisione file connette la configurazione condivisa di condivisione di rete alle server farm Web.
Topologia di provisioning tipica

La configurazione condivisa può essere abilitata facilmente tramite Gestione IIS, come illustrato nella schermata seguente.

Screenshot che mostra I S Manager. Il riquadro Configurazione condivisa è aperto.
È 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.

Diagramma che mostra i collegamenti tra server di provisioning, server farm Web e configurazione condivisa di condivisione di rete. Le chiamate di provisioning connettono il server di provisioning alle server farm Web.

Il frammento di codice seguente illustra l'uso di OpenRemote per effettuare il provisioning di un'applicazione in un server Web diverso.

Screenshot che mostra il frammento di codice che illustra l'uso di Open Remote.

Quando la configurazione condivisa è abilitata per il server Web remoto, viene visualizzato l'errore seguente quando si esegue il codice di esempio:

Screenshot che mostra il prompt dei comandi. La modalità remota viene immessa nella riga di comando e l'operazione non è riuscita a causa di autorizzazioni insufficienti.

Il problema non esiste se il server Web remoto usa la configurazione locale anziché la configurazione condivisa.

Disabilitare la configurazione condivisa:

Screenshot che mostra il riquadro Configurazione condivisa. La casella di controllo Abilita configurazione condivisa è deselezionata.

Eseguire nuovamente l'applicazione di esempio:

Screenshot che mostra il prompt dei comandi. La modalità remota viene immessa nella riga di comando e l'operazione è riuscita.

Il commit della modifica viene eseguito correttamente.

Screenshot che mostra il riquadro Home del sito Web predefinito. Il test viene cerchiato sotto il nodo Sito Web predefinito nel riquadro Connessioni.

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:

Screenshot che mostra la finestra di dialogo Proprietà amministratore h. L'opzione di avvio dell'utente è selezionata.

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:

  1. Disporre delle autorizzazioni di modifica per i file di configurazione condivisi nel server di condivisione di rete.
  2. Disporre dell'autorizzazione di lettura per redirection.config file archiviato in system32\inetsrv\config
  3. Membro del gruppo administrators locale. In caso contrario, non sarà possibile decrittografare l'eccezione.

Screenshot che mostra la finestra di dialogo Proprietà amministratore h. L'opzione Questa opzione utente è selezionata con le voci per Utente, Password e Conferma password.

Fare clic su OK.

Dopo la modifica, eseguire di nuovo l'applicazione di esempio, funziona correttamente.

Screenshot che mostra il prompt dei comandi. La modalità remota viene immessa nella riga di comando e l'operazione di amministrazione remota ha avuto esito positivo.

Il provisioning dell'applicazione di test viene eseguito correttamente.

Screenshot che mostra il riquadro Home del test. Il test è selezionato e cerchiato nel riquadro Connessioni.

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:
Diagramma che mostra i collegamenti tra server di provisioning, server farm Web e configurazione condivisa di condivisione di rete. Il servizio Web connette il server di provisioning alle server farm Web.
È 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.
Diagramma che mostra i collegamenti tra server di provisioning, server farm Web e configurazione condivisa di condivisione di rete. W M I connette il server di provisioning alle server farm Web.