Självstudie: Transformera och skydda ditt API

Självstudien visar hur du transformerar ditt API så att det inte visar information om den privata backend-enheten. Du kanske till exempel vill dölja informationen om teknikstacken som körs på backend. Du kanske också vill dölja ursprungliga URL:er som visas i brödtexten i API:ets HTTP-svar och i stället omdirigera dem till APIM-gatewayen.

Den här självstudien visar också hur enkelt det är att lägga till skydd för server-API:et genom att konfigurera en hastighetsbegränsning med Azure API Management. Du kanske till exempel vill begränsa frekvensen för API-anrop så att API:et inte överanvänds av utvecklare. Mer information finns i API Management principer.

I den här guiden får du lära dig att:

  • Omvandla ett API och ta bort svarshuvuden
  • Ersätt ursprungliga URL:er i API-svarets brödtext med URL:er för APIM-gatewayen
  • Skydda ett API genom att lägga till en princip för hastighetsbegränsning (begränsning)
  • Testa omvandlingarna

Principer i portalen

Förutsättningar

Gå till API Management-instansen

  1. I Azure Portal du efter och väljer API Management tjänster.

    Välj API Management tjänster

  2. På sidan API Management tjänster väljer du din API Management instans.

    Välj din API Management instans

Omvandla ett API och ta bort svarshuvuden

Det här avsnittet visar hur du döljer DE HTTP-huvuden som du inte vill visa för användarna. Det här exemplet visar hur du tar bort följande huvuden i HTTP-svaret:

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

Testa det ursprungliga svaret

Visa det ursprungliga svaret:

  1. I din API Management-tjänstinstans väljer du API:er.
  2. Välj Demo Conference API (Demokonferens-API) i din API-lista.
  3. Välj fliken Test överst på skärmen.
  4. Välj åtgärden GetSpeakers och välj Skicka.

Det ursprungliga svaret bör se ut ungefär så här:

Ursprungligt API-svar

Som du ser innehåller svaret huvudena X-AspNet-Version och X-Powered-By.

Ange en transformationsprincip

  1. Välj Demo Conference API Design All operations > > (Designa alla åtgärder för DemoKonferens-API).

  2. I avsnittet Utgående bearbetning väljer du kodredigeraren ( </> ).

    Gå till utgående princip

  3. Placera markören i det < utgående > elementet och välj Visa kodfragment i det övre högra hörnet.

  4. I det högra fönstret, under Transformeringsprinciper, väljer du Ange HTTP-huvud två gånger (för att infoga två principfragment).

    Ange princip för HTTP-huvud

  5. Ändra koden <outbound> så här:

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

    Ange HTTP-huvud

  6. Välj Spara.

Ersätt ursprungliga URL:er i API-svarets brödtext med URL:er för APIM-gatewayen

Det här avsnittet visar hur du döljer ursprungliga URL:er som visas i brödtexten i API:ets HTTP-svar och i stället omdirigerar dem till APIM-gatewayen.

Testa det ursprungliga svaret

Visa det ursprungliga svaret:

  1. Välj Demo Conference API Test (Testa demokonferens-API). >

  2. Välj åtgärden GetSpeakers och välj Skicka.

    Som du ser innehåller svaret url:erna för den ursprungliga backend-versionen:

    Ursprungliga URL:er som svar

Ange en transformationsprincip

  1. Välj Demo Conference API All operations Design (Design av alla > > åtgärder).
  2. I avsnittet Utgående bearbetning väljer du kodredigeraren ( </> ).
  3. Placera markören i det < utgående > elementet och välj Visa kodfragment i det övre högra hörnet.
  4. I det högra fönstret, under Transformeringsprinciper, väljer du Maskera URL:er i innehåll.
  5. Välj Spara.

Skydda ett API genom att lägga till en princip för frekvensbegränsningar (begränsning)

I det här avsnittet visas hur du lägger till skydd för ditt serverdels-API genom att konfigurera frekvensbegränsningar. Du kanske till exempel vill begränsa frekvensen för API-anrop så att API:et inte överanvänds av utvecklare. I det här exemplet är gränsen inställd på 3 anrop per 15 sekunder för varje prenumerations-ID. Efter 15 sekunder kan en utvecklare försöka att anropa API:et igen.

  1. Välj Demo Conference API All operations Design (Design av alla > > åtgärder).

  2. I avsnittet Inkommande bearbetning väljer du kodredigeraren ( </> ) ikon.

  3. Placera markören i < det inkommande > elementet och välj Visa kodfragment i det övre högra hörnet.

    Ange princip för inkommande

  4. I det högra fönstret under Principer för åtkomstbegränsning väljer du + Begränsa anropsfrekvensen per nyckel.

  5. Ändra rate-limit-by-key-koden <inbound> (i -elementet) till följande kod:

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

Testa omvandlingarna

Om du nu tittar på koden i kodredigeraren ser dina principer ut så här:

<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>

I resten av det här avsnittet testas principtransformationer som du anger i den här övningen.

Testa borttagna svarshuvuden

  1. Välj Demo Conference API Test (Testa demokonferens-API). >

  2. Välj åtgärden GetSpeakers och välj Skicka.

    Som du ser har huvudena tagits bort:

    Bortskalade svarshuvuden

Testa den ersatta URL:en

  1. Välj Demo Conference API Test (Testa demokonferens-API). >

  2. Välj åtgärden GetSpeakers och välj Skicka.

    Som du ser har URL:en ersatts.

    Ersatt URL

Testa frekvensgränsen (begränsningen)

  1. Välj Demo Conference API Test (Testa demokonferens-API). >

  2. Välj åtgärden GetSpeakers. Välj Skicka tre gånger i rad.

    När du har skickat begäran 3 gånger får du svaret 429 För många begäranden.

    För många begäranden

  3. Vänta i 15 sekunder och välj Skicka igen. Den här gången bör få svaret 200 OK.

Nästa steg

I den här självstudiekursen lärde du dig att:

  • Omvandla ett API och ta bort svarshuvuden
  • Ersätt ursprungliga URL:er i API-svarets brödtext med URL:er för APIM-gatewayen
  • Skydda ett API genom att lägga till en princip för frekvensbegränsningar (begränsning)
  • Testa omvandlingarna

Gå vidare till nästa kurs: