Distribuzioni di applicazioni e servizi federati di ACS in Azure

Si applica a

  • Microsoft Azure Active Directory Access Control (anche noto come Servizio di controllo di accesso o ACS)

  • Windows Identity Foundation (WIF)

  • Microsoft Azure

Riepilogo

Questo argomento consolida le linee guida da tenere in considerazione quando si sviluppano applicazioni e servizi che usano ACS e che verranno distribuiti in Azure.

Obiettivi

  1. Ovviare al problema delle porte generate in modo dinamico nell'emulatore di calcolo.

  2. Distribuire Windows runtime di Identity Foundation (WIF) in Azure.

  3. Crittografare i cookie mediante RSA.

  4. Configurare gli assembly richiamati tramite reflection da distribuire in Azure.

Ovviare al problema delle porte generate in modo dinamico nell'emulatore di calcolo

Le informazioni contenute in questa sezione si riferiscono alla creazione di applicazioni Web. non alla creazione di servizi Web. Le Emulator di calcolo fanno parte degli strumenti di Azure SDK. È possibile usarlo per eseguire, testare, eseguire il debug e ottimizzare l'applicazione prima di distribuirla come servizio ospitato in Azure. Nell'emulatore di calcolo non è possibile allocare un indirizzo IP univoco. L'emulatore di calcolo prova ad assegnare la porta richiesta. Se la porta non è disponibile, alloca il successivo numero di porta disponibile appropriato. Questo significa che, all'interno dell'emulatore di calcolo, al servizio potrebbe essere assegnato un numero di porta diverso da quello specificato nel file di definizione. Per altre informazioni sulle Emulator di calcolo, vedere Panoramica del Windows Emulator di calcolo di Azure (https://go.microsoft.com/fwlink/?LinkId=221212).

Se Compute Emulator alloca un indirizzo IP diverso dall'indirizzo IP configurato come URL restituito nel portale di gestione ACS, ACS reindirizzerà le richieste autenticate all'URL configurato nel campo URL restituito della configurazione della relying party, ma non esisterà alcuna pagina corrispondente in questo URL. Di conseguenza, l'utente visualizzerà una pagina vuota.

Per ovviare a questo comportamento, impostare la porta pubblica dell'endpoint dell'applicazione Web cloud su una porta disponibile nel computer. In questo modo, l'emulatore di calcolo non assegnerà una porta casuale per evitare una collisione.

Per configurare l'endpoint in modo da usare una porta disponibile

  1. Per aprire il prompt dei comandi, fare clic sul pulsante Start, digitare cmd, quindi premere INVIO.

  2. Eseguire il comando seguente per visualizzare l'elenco di indirizzi IP host locali con le porte usate: netstat –a –n | findstr 127.0.0.1

  3. Esaminare l'elenco e individuare una porta attualmente non in uso. Questa porta verrà usata nei passaggi successivi.

  4. In Esplora soluzioni fare doppio clic sul proprio ruolo nella cartella Ruoli del progetto cloud. Viene aperta la pagina contenente le proprietà del ruolo.

  5. Nella pagina Proprietà ruolo Web fare clic sulla scheda Endpoint .

  6. Nel file **Porta pubblica ** specificare il valore della porta identificato nel passaggio 3.

  7. Per salvare il lavoro svolto, premere CTRL+S.

Distribuire il runtime Windows Identity Foundation in Windows Azure

Windows Identity Foundation (WIF) è un runtime fuori banda che è necessario installare nel computer affinché possa essere usato da applicazioni in grado di riconoscere attestazioni. WiF non è installato per impostazione predefinita nelle istanze di Azure. Per eseguire l'applicazione in grado di riconoscere attestazioni cloud, è necessario rendere disponibile il runtime WIF nell'istanza di Azure. Il modo più semplice per eseguire questa operazione consiste nell'includere l'assembly WIF nel pacchetto di distribuzione.

Per includere l'assembly WIF nel pacchetto di distribuzione di Windows Azure

  1. In Esplora soluzioni individuare l'applicazione in grado di riconoscere attestazioni.

  2. Espandere la cartella Riferimenti.

  3. Individuare l'assembly Microsoft.IdentityModel nella cartella Riferimenti.

  4. Fare clic con il pulsante destro del mouse sull'assembly e quindi scegliere Proprietà.

  5. Nella finestra delle proprietà specificare **Copia locale ** come True e Versione specifica come False.

Crittografare i cookie mediante RSA

Le informazioni contenute in questa sezione si riferiscono alla creazione di applicazioni Web. Per impostazione predefinita, WIF protegge i cookie a livello di crittografia usando interfacce DPAPI (Data Protection Application Programming Interface). DPAPI non è disponibile in Azure. Per assicurarsi che l'applicazione Web in grado di riconoscere attestazioni cloud funzioni correttamente quando viene distribuita in Azure, è necessario aggiungere funzionalità di crittografia dei cookie usando RSA.

Per crittografare i cookie usando RSA

  1. In Esplora soluzioni individuare l'applicazione Web cloud in grado di riconoscere attestazioni.

  2. Aprire il file global.asax.cs, ovvero il code-behind del file global.asax, nell'editor di Visual Studio.

  3. Aggiungere le dichiarazioni seguenti:

    using Microsoft.IdentityModel.Tokens;
    using Microsoft.IdentityModel.Web;
    using Microsoft.IdentityModel.Web.Configuration;
    
  4. Aggiungere il codice seguente:

    void OnServiceConfigurationCreated(object sender, ServiceConfigurationCreatedEventArgs e)
    {
        //
        // Use the <serviceCertificate> to protect the cookies that are
        // sent to the client.
        //
        List<CookieTransform> sessionTransforms =
            new List<CookieTransform>(new CookieTransform[] {
            new DeflateCookieTransform(), 
            new RsaEncryptionCookieTransform(e.ServiceConfiguration.ServiceCertificate),
            new RsaSignatureCookieTransform(e.ServiceConfiguration.ServiceCertificate)  });
        SessionSecurityTokenHandler sessionHandler = new SessionSecurityTokenHandler(sessionTransforms.AsReadOnly());
        e.ServiceConfiguration.SecurityTokenHandlers.AddOrReplace(sessionHandler);
    }
    
    void Application_Start(object sender, EventArgs e)
    {
        FederatedAuthentication.ServiceConfigurationCreated += OnServiceConfigurationCreated;
    

    Nota

    Se è già stato aggiunto il gestore dell'evento Application_Start, è possibile aggiornarlo in modo da includere questo codice.

  5. Salvare il lavoro.

Configurare assembly richiamati tramite reflection per la distribuzione in Windows Azure

In alcuni casi gli assembly vengono richiamati tramite reflection, ad esempio quando si sviluppano servizi WCF REST (Representational State Transfer) o moduli HTTP che controllano i token SWT in ingresso. Per assicurarsi che questi assembly vengano distribuiti in Azure, è necessario eseguire passaggi aggiuntivi per aggiungerli al pacchetto di distribuzione.

Per aggiungere assembly richiamati tramite reflection al pacchetto di distribuzione di Windows Azure

  1. Espandere la cartella bin del servizio o dell'applicazione Web cloud in grado di riconoscere attestazioni.

  2. Fare clic con il pulsante destro del mouse sull'assembly e quindi scegliere Includi nel progetto.

  3. Fare clic con il pulsante destro del mouse sulla stessa libreria e quindi scegliere Proprietà.

  4. Nella finestra Proprietà fare clic su Copia se più recente per Copia nella directory di output.

Vedere anche

Concetti

Indice delle linee guida di ACS