Esercitazione: Trasformare e proteggere l'API

SI APPLICA A: Tutti i livelli di Gestione API

In questa esercitazione si apprenderà come configurare i criteri comuni per trasformare l'API. È possibile trasformare l'API in modo che non riveli informazioni di back-end private. La trasformazione di un'API consente di nascondere le informazioni sullo stack di tecnologie in esecuzione nel back-end o nascondere gli URL originali visualizzati nel corpo della risposta HTTP dell'API.

Questa esercitazione illustra anche come aggiungere protezione all'API back-end configurando un criterio di limite di velocità, in modo che l'API non venga usata eccessivamente dagli sviluppatori. Per altre opzioni dei criteri, vedere Gestione API criteri.

Nota

Per impostazione predefinita, Gestione API configura un criterio globaleforward-request. Il forward-request criterio è necessario affinché il gateway completi una richiesta a un servizio back-end.

In questa esercitazione apprenderai a:

  • Trasformare un'API per rimuovere le intestazioni di risposta
  • Sostituire gli URL originali nel corpo della risposta dell'API con URL del gateway Gestione API
  • Proteggere un'API aggiungendo un criterio per il limite di frequenza (limitazione delle richieste)
  • Testare le trasformazioni

Criteri nel portale

Prerequisiti

Passare all'istanza di Gestione API

  1. Nel portale di Azure, cercare e selezionare Servizi Gestione API.

    Selezionare Servizi Gestione API

  2. Nella pagina Servizi Gestione API selezionare l'istanza di Gestione API.

    Selezionare l'istanza di Gestione API

Trasformare un'API per rimuovere le intestazioni di risposta

Questa sezione illustra come nascondere le intestazioni HTTP che non devono essere visualizzate dagli utenti. Ad esempio, eliminare le intestazioni seguenti nella risposta HTTP:

  • X-Powered-By
  • X-AspNet-Version

Testare la risposta originale

Per visualizzare la risposta originale:

  1. Nell'istanza del servizio Gestione API, selezionare API.
  2. Fare clic su Demo Conference API nell'elenco di API.
  3. Selezionare la scheda Test nella parte superiore della schermata.
  4. Selezionare l'operazione GetSpeakers e quindi selezionare Invia.

La risposta dell'API originale dovrebbe essere simile alla risposta seguente:

Risposta API originale

Come si può notare, la risposta include le intestazioni X-AspNet-Version e X-Powered by.

Impostare i criteri di trasformazione

In questo esempio viene illustrato come usare l'editor dei criteri basato su form, che consente di configurare molti criteri senza dover modificare direttamente le istruzioni XML dei criteri.

  1. Selezionare Demo Conference API>Progettazione>Tutte le operazioni.

  2. Nella sezione Elaborazione in uscita selezionare + Aggiungi criterio.

    Passare al criterio in uscita

  3. Nella finestra Aggiungi criteri in uscita selezionare Imposta intestazioni.

    Impostare il criterio per l'intestazione HTTP

  4. Per configurare i criteri di impostazione delle intestazioni, eseguire le operazioni seguenti:

    1. In Nome immettere X-Powered-By. In Azione selezionare Elimina.
    2. Selezionare + Aggiungi intestazione.
    3. In Nome immettere X-AspNet-Version. In Azione selezionare Elimina.

    Set HTTP header (Imposta intestazione HTTP)

  5. Seleziona Salva. Nella sezione Elaborazione in uscita vengono visualizzati due elementi dei criteri di intestazione set.

Sostituire gli URL originali nel corpo della risposta dell'API con URL del gateway Gestione API

Questa sezione illustra come sostituire gli URL originali visualizzati nel corpo della risposta HTTP dell'API con url del gateway Gestione API. È possibile nascondere gli URL back-end originali agli utenti.

Testare la risposta originale

Per visualizzare la risposta originale:

  1. Selezionare Demo Conference API>Test.

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

    Come si può notare, la risposta include gli URL originali del back-end:

    URL originali nella risposta

Impostare i criteri di trasformazione

In questo esempio si usa l'editor di codice dei criteri per aggiungere il frammento XML dei criteri direttamente alla definizione dei criteri.

  1. Selezionare Demo Conference API>Progettazione>Tutte le operazioni.

  2. Nella sezione Elaborazione in uscita selezionare l'icona dell'editor di codice (</>).

    Passare all'editor del codice dei criteri in uscita

  3. Posizionare il cursore all'interno dell'elemento <outbound> su una riga vuota. Selezionare quindi Mostra frammenti nell'angolo in alto a destra della schermata.

    Selezionare mostra frammenti di codice

  4. Nella finestra a destra, in Transformation policies (Criteri di trasformazione) selezionare Mask URLs in content (Maschera URL nel contenuto).

    L'elemento <redirect-content-urls /> viene aggiunto al cursore.

    Mask URLs in content (Maschera URL nel contenuto)

  5. Seleziona Salva.

Proteggere un'API aggiungendo criteri relativi ai limiti di frequenza (limitazione delle richieste)

Questa sezione illustra come aggiungere protezione all'API back-end configurando i limiti di frequenza, in modo che l'API non venga usata eccessivamente dagli sviluppatori. In questo esempio, il limite è impostato su tre chiamate per 15 secondi per ogni ID sottoscrizione. Dopo 15 secondi, uno sviluppatore può riprovare a chiamare un'API.

  1. Selezionare Demo Conference API>Progettazione>Tutte le operazioni.

  2. Nella sezione Elaborazione in ingresso selezionare l'icona dell'editor di codice (</>).

    Passare ai criteri in ingresso

  3. Posizionare il cursore all'interno dell'elemento <inbound> su una riga vuota. Selezionare quindi Mostra frammenti di codice nell'angolo superiore destro della schermata.

    Impostare i criteri in ingresso

  4. Nella finestra a destra, in Criteri di restrizione di accesso selezionare Limita frequenza di chiamata per chiave.

    L'elemento <rate-limit-by-key /> viene aggiunto al cursore.

    Selezionare limita frequenza di chiamata per chiave

  5. Modificare il <rate-limit-by-key /> codice nell'elemento <inbound> nel codice seguente. Quindi selezionare Salva.

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

Testare le trasformazioni

A questo punto, se si esamina il codice nell'editor di codice, i criteri sono simili al codice seguente:

<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" />
     <redirect-content-urls />
     <base />
   </outbound>
   <on-error>
     <base />
   </on-error>
</policies>

La parte rimanente della sezione testa le trasformazioni dei criteri impostate in questo articolo.

Testare le intestazioni della risposta eliminate

  1. Selezionare Demo Conference API>Test.

  2. Selezionare l'operazione GetSpeakers e quindi Invia.

    Come si può notare, le intestazioni sono state eliminate:

    Intestazioni della risposta eliminate

Testare l'URL sostituito

  1. Selezionare Demo Conference API>Test.

  2. Selezionare l'operazione GetSpeakers e quindi Invia.

    Come si può notare, gli URL vengono sostituiti.

    URL sostituiti

Testare il limite di frequenza (limitazione delle richieste)

  1. Selezionare Demo Conference API>Test.

  2. Selezionare l'operazione GetSpeakers. Fare clic su Invia tre volte di seguito.

    Dopo aver inviato la richiesta tre volte, si ottiene la risposta 429 Troppe richieste .

    Numero eccessivo di richieste

  3. Attendere 15 secondi o più e quindi selezionare di nuovo Invia . Questa volta verrà visualizzata una risposta 200 OK.

Passaggi successivi

Questa esercitazione ha descritto come:

  • Trasformare un'API per rimuovere le intestazioni di risposta
  • Sostituire gli URL originali nel corpo della risposta dell'API con URL del gateway Gestione API
  • Proteggere un'API aggiungendo criteri relativi ai limiti di frequenza (limitazione delle richieste)
  • Testare le trasformazioni

Passare all'esercitazione successiva: