Trasformare e proteggere l'APITransform and protect your API

L'esercitazione illustra come trasformare l'API in modo che non riveli le informazioni di un back-end privato.The tutorial shows how to transform your API so it does not reveal a private backend info. Potrebbe, ad esempio, essere necessario nascondere le informazioni sullo stack di tecnologie in esecuzione nel back-end.For example, you might want to hide the info about technology stack that is running on the backend. Potrebbe anche essere necessario nascondere gli URL originali visualizzati nel corpo della risposta HTTP dell'API e reindirizzarli invece al gateway di Gestione API.You might also want to hide original URLs that appear in the body of API's HTTP response and instead redirect them to the APIM gateway.

Questa esercitazione illustra quanto sia semplice aggiungere la protezione all'API back-end configurando il limite di frequenza con Gestione API di Azure.This tutorial also shows you how easy it is to add protection for your backend API by configuring rate limit with Azure API Management. Potrebbe, ad esempio, essere necessario limitare il numero di chiamate all'API in modo che non venga usata in modo eccessivo dagli sviluppatori.For example, you may want to limit a number of calls the API is called so it is not overused by developers. Per altre informazioni, vedere Criteri in Gestione APIFor more information, see API Management policies

In questa esercitazione si apprenderà come:In this tutorial, you learn how to:

  • Trasformare un'API per rimuovere le intestazioni di rispostaTransform an API to strip response headers
  • Sostituire gli URL originali nel corpo della risposta dell'API con URL del gateway di Gestione APIReplace original URLs in the body of the API response with APIM gateway URLs
  • Proteggere un'API aggiungendo criteri relativi ai limiti di frequenza (limitazione delle richieste)Protect an API by adding rate limit policy (throttling)
  • Testare le trasformazioniTest the transformations

Criteri

PrerequisitiPrerequisites

Passare all'istanza di Gestione APIGo to your API Management instance

Passare all'istanza di Gestione API

  1. Accedere al portale di Azure.Sign in to the Azure portal.

  2. Selezionare Tutti i servizi.Select All services.

  3. Nella casella di ricerca immettere api management.In the search box, enter api management.

  4. Nei risultati della ricerca selezionare Servizi Gestione API.In the search results, select API Management services.

  5. Selezionare l'istanza del servizio Gestione API in esecuzione.Select your API Management service instance.

Suggerimento

Per aggiungere Gestione API ai Preferiti del portale di Azure, selezionare la stella.To add API Management to your favorites in the Azure portal, select the star.

L'icona della Gestione API (The API Management icon (icona della Gestione API) viene ora visualizzata nel menu a sinistra nel portale.) now appears in the left menu in the portal.

Trasformare un'API per rimuovere le intestazioni di rispostaTransform an API to strip response headers

Questa sezione illustra come nascondere le intestazioni HTTP che non devono essere visualizzate dagli utenti.This section shows how to hide the HTTP headers that you do not want to show to your users. In questo esempio le intestazioni seguenti vengono eliminate nella risposta HTTP:In this example, the following headers get deleted in the HTTP response:

  • X-Powered-ByX-Powered-By
  • X-AspNet-VersionX-AspNet-Version

Testare la risposta originaleTest the original response

Per visualizzare la risposta originale:To see the original response:

  1. Nell'istanza del servizio Gestione API selezionare API (in GESTIONE API).In your APIM service instance, select APIs (under API MANAGEMENT).
  2. Fare clic su Demo Conference API (API Demo Conference) nell'elenco di API.Click Demo Conference API from your API list.
  3. Fare clic sulla scheda Test nella parte superiore della schermata.Click the Test tab, on the top of the screen.
  4. Selezionare l'operazione GetSpeakers.Select the GetSpeakers operation.
  5. Fare clic sul pulsante Invia nella parte inferiore della schermata.Press the Send button, at the bottom of the screen.

La risposta originale dovrebbe avere l'aspetto seguente:The original response should look like this:

Criteri

Impostare i criteri di trasformazioneSet the transformation policy

Impostare i criteri in uscita

  1. Selezionare Demo Conference API.Select Demo Conference API.

  2. Nella parte superiore della schermata selezionare la scheda Progettazione.On the top of the screen, select Design tab.

  3. Selezionare Tutte le operazioni.Select All operations.

  4. Nella sezione Elaborazione in uscita fare clic sull'icona </>.In the Outbound processing section, click the </> icon.

  5. Posizionare il cursore all'interno dell'elemento <outbound>.Position the cursor inside the <outbound> element.

  6. Nella finestra di destra, in Transformation policies (Criteri di trasformazione) fare clic su + Set HTTP header (+ Imposta intestazione HTTP) due volte (per inserire due frammenti di criteri).In the right window, under Transformation policies, click + Set HTTP header twice (to insert two policy snippets).

    Criteri

  7. Modificare il codice <outbound> in modo che risulti simile al seguente:Modify your <outbound> code to look like this:

    <set-header name="X-Powered-By" exists-action="delete" />
    <set-header name="X-AspNet-Version" exists-action="delete" />
    

    Criteri

  8. Fare clic sul pulsante Salva .Click the Save button.

Sostituire gli URL originali nel corpo della risposta dell'API con URL del gateway di Gestione APIReplace original URLs in the body of the API response with APIM gateway URLs

Questa sezione illustra come nascondere gli URL originali visualizzati nel corpo della risposta HTTP dell'API e reindirizzarli invece al gateway di Gestione API.This section shows how to hide original URLs that appear in the body of API's HTTP response and instead redirect them to the APIM gateway.

Testare la risposta originaleTest the original response

Per visualizzare la risposta originale:To see the original response:

  1. Selezionare Demo Conference API.Select Demo Conference API.

  2. Fare clic sulla scheda Test nella parte superiore della schermata.Click the Test tab, on the top of the screen.

  3. Selezionare l'operazione GetSpeakers.Select the GetSpeakers operation.

  4. Fare clic sul pulsante Invia nella parte inferiore della schermata.Press the Send button, at the bottom of the screen.

    Come si può notare, la risposta originale è simile alla seguente:As you can see the original response looks like this:

    Criteri

Impostare i criteri di trasformazioneSet the transformation policy

  1. Selezionare Demo Conference API.Select Demo Conference API.

  2. Selezionare Tutte le operazioni.Select All operations.

  3. Nella parte superiore della schermata selezionare la scheda Progettazione.On the top of the screen, select Design tab.

  4. Nella sezione Elaborazione in uscita fare clic sull'icona </>.In the Outbound processing section, click the </> icon.

  5. Posizionare il cursore all'interno dell'elemento <outbound>.Position the cursor inside the <outbound> element.

  6. Nella finestra a destra, in Transformation policies (Criteri di trasformazione) fare clic su + Find and replace string in body (+ Trova e sostituisci la stringa nel corpo).In the right window, under Transformation policies, click + Find and replace string in body.

  7. Modificare il codice find-and-replace (nell'elemento <in uscita>) per sostituire l'URL in modo che corrisponda al gateway di Gestione API.Modify your find-and-replace code (in the <outbound> element) to replace the URL to match your APIM gateway. Ad esempio: For example:

    <find-and-replace from="://conferenceapi.azurewebsites.net" to="://apiphany.azure-api.net/conference"/>
    

Proteggere un'API aggiungendo criteri relativi ai limiti di frequenza (limitazione delle richieste)Protect an API by adding rate limit policy (throttling)

Questa sezione illustra come aggiungere la protezione per l'API back-end configurando i limiti di frequenza.This section shows how to add protection for your backend API by configuring rate limits. Potrebbe, ad esempio, essere necessario limitare il numero di chiamate all'API in modo che non venga usata in modo eccessivo dagli sviluppatori.For example, you may want to limit a number of calls the API is called so it is not overused by developers. In questo esempio il limite è impostato su 3 chiamate ogni 15 secondi per ogni ID di sottoscrizione. Dopo 15 secondi, uno sviluppatore può ripetere la chiamata all'API.In this example, the limit is set to 3 calls per 15 seconds for each subscription Id. After 15 seconds, a developer can retry calling the API.

Impostare i criteri in ingresso

  1. Selezionare Demo Conference API.Select Demo Conference API.

  2. Selezionare Tutte le operazioni.Select All operations.

  3. Nella parte superiore della schermata selezionare la scheda Progettazione.On the top of the screen, select Design tab.

  4. Nella sezione Elaborazione in ingresso fare clic sull'icona </>.In the Inbound processing section, click the </> icon.

  5. Posizionare il cursore all'interno dell'elemento <inbound>.Position the cursor inside the <inbound> element.

  6. Nella finestra a destra, in Access restriction policies (Criteri di restrizione dell'accesso) fare clic su + Limit call rate per key (+ Limita frequenza delle chiamate per chiave).In the right window, under Access restriction policies, click + Limit call rate per key.

  7. Sostituire il codice rate-limit-by-key (nell'elemento <in ingresso>) con il codice seguente:Modify your rate-limit-by-key code (in the <inbound> element) to the following code:

    <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
    

Testare le trasformazioniTest the transformations

A questo punto, se si esamina il codice nell'editor di codice, i criteri sono simili ai seguenti:At this point if you look at the code in the code editor, your policies look like this:

<policies>
    <inbound>
        <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
        <base />
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <set-header name="X-Powered-By" exists-action="delete" />
        <set-header name="X-AspNet-Version" exists-action="delete" />
        <find-and-replace from="://conferenceapi.azurewebsites.net:443" to="://apiphany.azure-api.net/conference"/>
        <find-and-replace from="://conferenceapi.azurewebsites.net" to="://apiphany.azure-api.net/conference"/>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

La parte rimanente della sezione testa le trasformazioni dei criteri impostate in questo articolo.The rest of this section tests policy transformations that you set in this article.

Testare le intestazioni della risposta eliminateTest the stripped response headers

  1. Selezionare Demo Conference API.Select Demo Conference API.

  2. Selezionare la scheda Test.Select the Test tab.

  3. Fare clic sull'operazione GetSpeakers.Click the GetSpeakers operation.

  4. Fare clic su Invia.Press Send.

    Come si può notare, le intestazioni sono state eliminate:As you can see the headers have been stripped:

    Criteri

Testare l'URL sostituitoTest the replaced URL

  1. Selezionare Demo Conference API.Select Demo Conference API.

  2. Selezionare la scheda Test.Select the Test tab.

  3. Fare clic sull'operazione GetSpeakers.Click the GetSpeakers operation.

  4. Fare clic su Invia.Press Send.

    Come si può notare, l'URL è stato sostituito.As you can see the URL has been replaced.

    Criteri

Testare il limite di frequenza (limitazione delle richieste)Test the rate limit (throttling)

  1. Selezionare Demo Conference API.Select Demo Conference API.

  2. Selezionare la scheda Test.Select the Test tab.

  3. Fare clic sull'operazione GetSpeakers.Click the GetSpeakers operation.

  4. Fare clic su Invia tre volte in una riga.Press Send three times in a row.

    Dopo avere inviato la richiesta 3 volte, viene visualizzata la risposta 429 Too many requests.After sending the request 3 times, you get 429 Too many requests response.

  5. Attendere circa 15 secondi e fare si nuovo clic su Invia.Wait 15 seconds or so and press Send again. Questa volta verrà visualizzata una risposta 200 OK.This time you should get a 200 OK response.

    Limitazione

VideoVideo

Passaggi successiviNext steps

Questa esercitazione illustra come:In this tutorial, you learned how to:

  • Trasformare un'API per rimuovere le intestazioni di rispostaTransform an API to strip response headers
  • Sostituire gli URL originali nel corpo della risposta dell'API con URL del gateway di Gestione APIReplace original URLs in the body of the API response with APIM gateway URLs
  • Proteggere un'API aggiungendo criteri relativi ai limiti di frequenza (limitazione delle richieste)Protect an API by adding rate limit policy (throttling)
  • Testare le trasformazioniTest the transformations

Passare all'esercitazione successiva:Advance to the next tutorial: