Esercizio: Rimuovere le informazioni dell'intestazione

Completato

Le aziende che pubblicano API Web devono spesso controllare attentamente le intestazioni HTTP restituite dalle API, preferibilmente senza riscrivere il codice sorgente delle API.

L'ente governativo ha deciso di condividere i dati del censimento con le proprie agenzie usando API RESTful. I requisiti critici sono che i dati vengano condivisi in modo sicuro e possano essere facilmente modificati per facilitare una rapida integrazione. Lo sviluppatore responsabile deve creare un gateway API. Si userà quindi il gateway per pubblicare un'API Census RESTful che espone un endpoint OpenAPI usando standard di sicurezza moderni.

Deve eseguire queste operazioni:

  • Pubblicare un'API Census RESTful.
  • Distribuire un gateway di Gestione API.
  • Esporre l'API Census usando l'endpoint del gateway.
  • Rimuovere un'intestazione dalla risposta.

Importante

Per eseguire questo esercizio è necessario disporre di una propria sottoscrizione di Azure e questo potrebbe comportare dei costi. Se non hai ancora una sottoscrizione di Azure, crea un account gratuito prima di iniziare.

Distribuire l'API Web Census

È stata sviluppata un'app .NET Core che restituisce le informazioni riservate sul censimento. L'app include Swashbuckle per generare la documentazione di OpenAPI.

Per risparmiare tempo, si inizierà eseguendo uno script per ospitare l'API RESTful in Azure. Lo script esegue le operazioni seguenti:

  • Crea un piano di servizio app di Azure nel livello gratuito.
  • Crea un'API Web nel servizio app di Azure configurata per la distribuzione Git da un repository locale.
  • Imposta le credenziali di distribuzione a livello di account per l'app.
  • Configura GIT in locale.
  • Distribuisce l'API Web all'istanza del servizio app.
  1. Accedi al portale di Azure.

  2. Nella barra delle applicazioni di Azure selezionare l'icona Cloud Shell per aprire Azure Cloud Shell.

    Screenshot of Cloud Shell icon in taskbar.

  3. Per clonare il repository contenente l'origine per l'app, eseguire il comando git clone seguente in Cloud Shell:

    git clone https://github.com/MicrosoftDocs/mslearn-protect-apis-on-api-management.git
    
  4. Per passare alla cartella del repository in locale, eseguire il comando seguente:

    cd mslearn-protect-apis-on-api-management
    
  5. Come suggerisce il nome, setup.sh è lo script che viene eseguito per creare l'API di test. Questo script genera un'app Web pubblica che espone un'interfaccia OpenAPI:

    bash setup.sh
    

    L'esecuzione dello script richiede circa un minuto. Al termine dello script verranno visualizzati due URL che è possibile usare per testare la distribuzione dell'app. Si osservi che durante la distribuzione tutte le dipendenze necessarie per l'esecuzione dell'app vengono installate automaticamente nel servizio app remoto.

  6. Per verificare che l'app sia stata distribuita correttamente, copiare e incollare il primo URL dall'output di Cloud Shell nel browser. Il browser dovrebbe visualizzare l'interfaccia utente di Swagger per l'app e dichiarare gli endpoint RESTful seguenti:

    • api/census, che restituisce un censimento e le persone associate
    • api/census/{censusYear}, che restituisce un censimento e le persone associate per l'anno specificato
    • api/people/{reference}, che restituisce informazioni dettagliate su una persona specifica

    Screenshot of the Swagger page for the API, showing the RESTful endpoints.

  7. Infine, copiare l'ultimo URL dall'output di Cloud Shell. Questo URL è l'URL JSON di Swagger che verrà usato più avanti in questo esercizio.

Distribuire un gateway API

Il passaggio successivo di questo esercizio consiste nel creare un gateway API nel portale di Azure. Nella sezione successiva si userà il gateway per pubblicare l'API:

  1. Accedere al portale di Azure.

  2. Nel menu del portale di Azure o nella home page selezionare Crea una risorsa. Viene visualizzato il riquadro Crea una risorsa.

  3. Nel riquadro dei menu a sinistra selezionare Integrazione e quindi immettere Gestione API nella casella di ricerca Servizi di ricerca e marketplace. Selezionare la scheda Gestione API nei risultati e quindi Crea per aprire il riquadro Crea servizio Gestione API.

  4. Nella scheda Informazioni di base immettere i valori indicati di seguito per ogni impostazione.

    Impostazione Valore
    Dettagli di progetto
    Subscription Selezionare la propria sottoscrizione
    Gruppo di risorse Selezionare un gruppo di risorse nuovo o esistente. Un gruppo di risorse è un contenitore logico in cui risiedono le risorse correlate per una soluzione di Azure.
    Dettagli istanza
    Region Selezionare un'area disponibile.
    Nome risorsa Immettere apim-CensusData<random number>, sostituendo random number con la propria serie di numeri per assicurarsi che il nome sia univoco a livello globale.
    Nome organizzazione Immetti Government-Census. Nome dell'organizzazione da usare nel portale per sviluppatori e per le notifiche di posta elettronica. Il portale per sviluppatori e le notifiche non sono disponibili in tutti i livelli di servizio.
    Indirizzo di posta elettronica dell'amministratore Indirizzo di posta elettronica per ricevere tutte le notifiche di sistema.
    Piano tariffario
    Piano tariffario Selezionare Consumption (99.95% SLA) dall'elenco a discesa.

    Screenshot of the completed settings on the Basics tab of the Create API Management service screen.

    Nota

    Il livello A consumo offre una distribuzione rapida per il test e prevede un modello tariffario con pagamento in base al consumo. L'esperienza complessiva di Gestione API è molto simile a quella degli altri piani tariffari.

  5. Selezionare Rivedi e crea. Al termine della convalida selezionare Crea. Questa operazione può richiedere alcuni minuti. Al termine della distribuzione, l'istanza di Gestione API verrà visualizzata nell'elenco delle risorse di Azure. Selezionare Vai alla risorsa per visualizzare il riquadro per il servizio Gestione API.

Importare l'API

Importare ora l'API Census nel gateway di Gestione API:

  1. Nel riquadro dei menu a sinistra dell'istanza di Gestione API, nella sezione API, selezionare API e quindi + Aggiungi API.

  2. In Crea da definizione selezionare OpenAPI. Viene visualizzata la finestra di dialogo Crea dalla specifica OpenAPI.

  3. Nel campo Specifica OpenAPI incollare l'URL JSON di Swagger salvato in precedenza nell'esercizio.

    Screenshot of the Create from OpenAPI specification dialog box with the swagger JSON URL entered.

    Nota

    Si noterà che, uscendo dalla casella, alcuni degli altri campi verranno popolati automaticamente perché è stata usata OpenAPI, che specifica la maggior parte dei dettagli di connessione necessari.

  4. Lasciare i valori predefiniti per tutte le altre impostazioni e quindi selezionare Crea.

Testare l'API

Di seguito sono riportati i dati restituiti dall'API per impostazione predefinita:

  1. Nel menu del portale di Azure o nella home page selezionare Tutte le risorse e quindi selezionare l'istanza di Gestione API.

  2. Nel riquadro del menu a sinistra, in API selezionare API e nel riquadro centrale selezionare Census Data (Dati censimento).

  3. Nella barra dei menu in alto selezionare la scheda Test e quindi selezionare l'operazione GetLatestCensus.

  4. Selezionare Invia.

    Screenshot of the test results for the GetLatestCensus operation, showing the default Response content.

  5. Si noti che x-powered-by viene visualizzato nella risposta e indica che il framework è ASP.NET.

Rimuovere le intestazioni

A questo punto si aggiungeranno criteri per rimuovere l'intestazione x-powered-by dalle risposte inviate dall'API:

  1. Selezionare di nuovo Census Data (Dati censimento) e nella barra dei menu in alto selezionare la scheda Progettazione.

  2. Selezionare Tutte le operazioni e quindi nella sezione Elaborazione in uscita selezionare l'icona </>. Verrà visualizzato l'editor XML dei criteri.

    Screenshot of the Design tab with the Policies icon highlighted in the Outbound processing section.

  3. Sostituire il tag <outbound> predefinito con il codice seguente:

    <outbound>
       <set-header name="x-powered-by" exists-action="delete" />
       <base />
    </outbound>
    
  4. Seleziona Salva.

Testare la rimozione delle intestazioni

A questo punto dovrebbe essere possibile eseguire un test per dimostrare che le intestazioni sono state rimosse:

  1. Selezionare di nuovo Census Data (Dati censimento) e nella barra dei menu in alto selezionare la scheda Test.

  2. Selezionare l'operazione GetLatestCensus e quindi selezionare Invia.

    Screenshot of the test results for the GetLatestCensus operation, showing the headers removed in the Response.

  3. L'intestazione x-powered-by non deve trovarsi nella risposta HTTP.