Transformer et protéger votre APITransform and protect your API

Le didacticiel vous montre comment transformer votre API de manière à ce qu’elle ne divulgue pas d’informations confidentielles du serveur principal.The tutorial shows how to transform your API so it does not reveal a private backend info. Par exemple, il se peut que vous vouliez masquer certaines informations relatives à la pile de technologies exécutée sur le serveur principal.For example, you might want to hide the info about technology stack that is running on the backend. De la même manière, vous pourriez avoir intérêt à protéger les URL d’origine qui apparaissent dans le corps de la réponse HTTP de l’API, en les redirigeant vers la passerelle APIM.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.

Ce didacticiel vous montre par ailleurs combien il est facile d’ajouter une protection à votre API principale en configurant les limite de débit avec la Gestion des API 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. Par exemple, vous pouvez limiter le nombre d’appels dirigés vers l’API, ceci pour éviter toute surutilisation de celle-ci par les développeurs.For example, you may want to limit a number of calls the API is called so it is not overused by developers. Pour plus d’informations, consultez la section Stratégies dans Gestion des API AzureFor more information, see API Management policies

Ce tutoriel vous montre comment effectuer les opérations suivantes :In this tutorial, you learn how to:

  • Transformer une API pour supprimer des en-têtes de réponseTransform an API to strip response headers
  • Remplacer les URL d’origine dans le corps de la réponse de l’API par les URL de la passerelle APIMReplace original URLs in the body of the API response with APIM gateway URLs
  • Protéger une API en ajoutant une stratégie de limite de débit (limitation)Protect an API by adding rate limit policy (throttling)
  • Tester les transformationsTest the transformations

Stratégies

PrérequisPrerequisites

Accéder à votre instance Gestion des APIGo to your API Management instance

  1. Sur le portail Azure, recherchez et sélectionnez Services Gestion des API.In the Azure portal, search for and select API Management services.

    Sélectionnez les services Gestion des API

  2. Dans l’écran Gestion des API, sélectionnez votre instance Gestion des API.On the API Management screen, select your API Management instance.

    Sélectionnez votre instance Gestion des API

Transformer une API pour supprimer des en-têtes de réponseTransform an API to strip response headers

Cette section vous montre comment masquer les en-têtes HTTP que vous ne souhaiter pas divulguer à vos utilisateurs.This section shows how to hide the HTTP headers that you do not want to show to your users. Dans cet exemple, les en-têtes suivants ont été supprimés de la réponse HTTP :In this example, the following headers get deleted in the HTTP response:

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

Tester la réponse d’origineTest the original response

Pour consulter la réponse d’origine :To see the original response:

  1. Dans votre instance de service APIM, sélectionnez API (sous GESTION DES API).In your APIM service instance, select APIs (under API MANAGEMENT).
  2. Cliquez sur API de conférence de démonstration dans votre liste d’API.Click Demo Conference API from your API list.
  3. Cliquez sur l’onglet Test, sur la partie supérieure de l’écran.Click the Test tab, on the top of the screen.
  4. Sélectionnez l’opération GetSpeakers.Select the GetSpeakers operation.
  5. Appuyez sur le bouton Envoyer, sur la partie inférieure de l’écran.Press the Send button, at the bottom of the screen.

La réponse originale est de ce type :The original response should look like this:

Stratégies

Définir la stratégie de transformationSet the transformation policy

Définir une stratégie sortante

  1. Sélectionnez API de conférence de démonstration.Select Demo Conference API.

  2. Sélectionnez l’onglet Conception en haut de l’écran.On the top of the screen, select Design tab.

  3. Sélectionnez Toutes les opérations.Select All operations.

  4. Dans le Traitement sortant, cliquez sur l’icône </> .In the Outbound processing section, click the </> icon.

  5. Placez le curseur à l’intérieur de l’élément <sortant> .Position the cursor inside the <outbound> element.

  6. Dans la fenêtre de droite, sous Stratégies de transformation, cliquez deux fois sur + Set HTTP header (afin d’insérer deux extraits de stratégie).In the right window, under Transformation policies, click + Set HTTP header twice (to insert two policy snippets).

    Stratégies

  7. Modifiez votre code <outbound> afin qu’il ressemble à ceci :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" />
    

    Stratégies

  8. Cliquez sur le bouton Enregistrer .Click the Save button.

Remplacer les URL d’origine dans le corps de la réponse de l’API par les URL de la passerelle APIMReplace original URLs in the body of the API response with APIM gateway URLs

Cette section vous explique comment protéger vos URL d’origine qui apparaissent dans le corps de la réponse HTTP de l’API, en les redirigeant vers la passerelle APIM.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.

Tester la réponse d’origineTest the original response

Pour consulter la réponse d’origine :To see the original response:

  1. Sélectionnez API de conférence de démonstration.Select Demo Conference API.

  2. Cliquez sur l’onglet Test, sur la partie supérieure de l’écran.Click the Test tab, on the top of the screen.

  3. Sélectionnez l’opération GetSpeakers.Select the GetSpeakers operation.

  4. Appuyez sur le bouton Envoyer, sur la partie inférieure de l’écran.Press the Send button, at the bottom of the screen.

    Comme vous pouvez le voir, la réponse se présente ainsi :As you can see the original response looks like this:

    Stratégies

Définir la stratégie de transformationSet the transformation policy

  1. Sélectionnez API de conférence de démonstration.Select Demo Conference API.

  2. Sélectionnez Toutes les opérations.Select All operations.

  3. Sélectionnez l’onglet Conception en haut de l’écran.On the top of the screen, select Design tab.

  4. Dans le Traitement sortant, cliquez sur l’icône </> .In the Outbound processing section, click the </> icon.

  5. Placez le curseur à l’intérieur de l’élément <sortant> .Position the cursor inside the <outbound> element.

  6. Dans la fenêtre de droite, sous Stratégies de transformation, cliquez sur + Find and replace string in body.In the right window, under Transformation policies, click + Find and replace string in body.

  7. Modifiez votre code find-and-replace (dans l’élément <outbound> ) afin de remplacer l’URL par une instance correspondant à celle de la passerelle APIM.Modify your find-and-replace code (in the <outbound> element) to replace the URL to match your APIM gateway. Par exemple :For example:

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

Protéger une API en ajoutant une stratégie de limite de débit (limitation)Protect an API by adding rate limit policy (throttling)

Cette section vous montre comment ajouter une protection pour votre API principale, en configurant les limites de débit.This section shows how to add protection for your backend API by configuring rate limits. Par exemple, vous pouvez limiter le nombre d’appels dirigés vers l’API, ceci pour éviter toute surutilisation de celle-ci par les développeurs.For example, you may want to limit a number of calls the API is called so it is not overused by developers. Dans cet exemple, la limite est fixée à 3 appels par intervalle de 15 secondes, pour chaque identifiant d’abonnement. Après 15 secondes, un développeur peut de nouveau tenter d’appeler l’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.

Définir une stratégie entrante

  1. Sélectionnez API de conférence de démonstration.Select Demo Conference API.

  2. Sélectionnez Toutes les opérations.Select All operations.

  3. Sélectionnez l’onglet Conception en haut de l’écran.On the top of the screen, select Design tab.

  4. Dans la section Traitement entrant, cliquez sur l’icône </> .In the Inbound processing section, click the </> icon.

  5. Placez le curseur à l’intérieur de l’élément <sortant> .Position the cursor inside the <inbound> element.

  6. Dans la fenêtre de droite, sous Accès aux stratégies de restriction, cliquez sur + Limit call rate per key.In the right window, under Access restriction policies, click + Limit call rate per key.

  7. Remplacez votre code rate-limit-by-key (dans l’élément <inbound> ) par le code suivant :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)" />
    

Tester les transformationsTest the transformations

À ce stade, si vous examinez le code dans l’éditeur de code, vos stratégies ressemblent à ceci :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>

Le reste de cette section est dédié au test des transformations de stratégies définies dans cet article.The rest of this section tests policy transformations that you set in this article.

Tester les en-têtes de réponse supprimésTest the stripped response headers

  1. Sélectionnez API de conférence de démonstration.Select Demo Conference API.

  2. Sélectionnez l’onglet Test.Select the Test tab.

  3. Cliquez sur l’opération GetSpeakers.Click the GetSpeakers operation.

  4. Appuyez sur Envoyer.Press Send.

    Comme vous pouvez le voir, les en-têtes ont été supprimés :As you can see the headers have been stripped:

    Stratégies

Tester l’URL remplacéTest the replaced URL

  1. Sélectionnez API de conférence de démonstration.Select Demo Conference API.

  2. Sélectionnez l’onglet Test.Select the Test tab.

  3. Cliquez sur l’opération GetSpeakers.Click the GetSpeakers operation.

  4. Appuyez sur Envoyer.Press Send.

    Comme vous pouvez le constater, l’URL a été remplacée.As you can see the URL has been replaced.

    Stratégies

Tester la limite de débit (limitation)Test the rate limit (throttling)

  1. Sélectionnez API de conférence de démonstration.Select Demo Conference API.

  2. Sélectionnez l’onglet Test.Select the Test tab.

  3. Cliquez sur l’opération GetSpeakers.Click the GetSpeakers operation.

  4. Appuyez trois fois consécutives sur Envoyer.Press Send three times in a row.

    Une fois que vous avez transmis 3 fois la requête, vous recevez une réponse 429 Trop de demandes.After sending the request 3 times, you get 429 Too many requests response.

  5. Attendez environ 15 secondes, puis appuyez de nouveau sur Envoyer.Wait 15 seconds or so and press Send again. Cette fois, vous devriez obtenir une réponse 200 OK.This time you should get a 200 OK response.

    Limitation

VidéoVideo

Étapes suivantesNext steps

Dans ce tutoriel, vous avez appris à :In this tutorial, you learned how to:

  • Transformer une API pour supprimer des en-têtes de réponseTransform an API to strip response headers
  • Remplacer les URL d’origine dans le corps de la réponse de l’API par les URL de la passerelle APIMReplace original URLs in the body of the API response with APIM gateway URLs
  • Protéger une API en ajoutant une stratégie de limite de débit (limitation)Protect an API by adding rate limit policy (throttling)
  • Tester les transformationsTest the transformations

Passez au tutoriel suivant :Advance to the next tutorial: