Sécuriser une API en exigeant des clés API

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

Points abordés

Dans ce tutoriel, vous allez apprendre à effectuer les opérations suivantes:

  • Créer un proxy d'API qui nécessite une clé API
  • Ajoutez un produit d'API.
  • Ajouter un développeur et enregistrer une application
  • Appeler votre API avec une clé API

Il est important de protéger votre API contre tout accès non autorisé. Une façon de utilisez pour cela des clés API (également appelées clés publiques, clés ou clés d'application).

Lorsqu'une application envoie une requête à votre API, l'application doit fournir une clé valide. Au moment de l'exécution, la règle Vérifier la clé API vérifie que la clé API fournie:

  • est valide ;
  • n'a pas été révoquée ;
  • Correspond à la clé API du produit d'API qui expose la clé ressources

Si la clé est valide, la requête est autorisée. Si la clé n'est pas valide, le la requête aboutit à un échec de l'autorisation.

Dans ce tutoriel, vous allez créer un proxy d'API qui nécessite une API valide pour y accéder.

Prérequis

  • Un compte Apigee Edge. Si vous n'en avez pas, vous pouvez vous inscrire avec les instructions de <ph type="x-smartling-placeholder"></ph> Créer un compte Apigee Edge
  • Un navigateur Web pour effectuer un appel d'API.
  • (Pour la section des crédits supplémentaires, non obligatoire) cURL installée sur votre machine pour effectuer des appels d'API à partir de la ligne de commande.

Créer le proxy d'API

À propos de "mocktarget"

Le service mocktarget est hébergé chez Apigee et renvoie des données données. Il ne nécessite aucune clé d'API ni jeton d'accès. En fait, vous pouvez y accéder dans un navigateur Web. Essayez-le en cliquant sur les éléments suivants :

http://mocktarget.apigee.net

La cible renvoie Hello, Guest!. Utilisez les /help ressource pour obtenir une page d'aide présentant les autres ressources d'API disponibles

  1. Accéder à <ph type="x-smartling-placeholder"></ph> https://apigee.com/edge et connectez-vous.
  2. Accédez à l'organisation de votre choix en cliquant sur votre nom d'utilisateur en haut de la barre de navigation latérale pour afficher le menu du profil utilisateur, puis en sélectionnant l'organisation dans la liste.

    sélection de l&#39;organisation dans le menu du profil utilisateur
  3. Cliquez sur API Proxies (Proxys d'API) sur la page de destination pour afficher l'API. liste de proxys.

    Menu des API Edge
  4. Cliquez sur + Proxy.
    Bouton &quot;Créer un proxy&quot;
  5. Sur la page Créer un proxy, sélectionnez Proxy inverse (le plus courant).
  6. Sur la page Détails du proxy, configurez le proxy comme suit:
    Dans ce champ procédez comme suit
    Nom du proxy Saisissez : helloworld_apikey
    Chemin de base du projet

    Remplacez par : /helloapikey

    Le chemin de base du projet fait partie de l'URL utilisée pour créer des requêtes au proxy d'API.

    Remarque: Pour obtenir les recommandations d'Apigee sur la gestion des versions d'API, voir Gestion des versions dans le cours Web API Design: The Missing Lien e-book.

    Existing API (API existante)

    Saisissez : http://mocktarget.apigee.net

    Ceci définit l'URL cible qu'Apigee Edge appelle sur une de requête envoyée au proxy d'API.

    Description Saisissez : hello world protected by API key
  7. Cliquez sur Suivant.
  8. Sur la page Common politiques (Stratégies communes), sous Security (Sécurité) : Autorisation, sélectionnez Clé API, puis cliquez sur Suivant. Ce ajoute deux stratégies à votre proxy d'API.
  9. Sur la page Virtual Hosts (Hôtes virtuels), sélectionnez default (par défaut). secure (sécurisé), puis cliquez sur Next (Suivant). Si vous sélectionnez par défaut, d'appeler votre API avec http://. en sélectionnant sécurisé, vous permet d'appeler votre API avec https://.
  10. Sur la page Summary (Résumé), assurez-vous que le déploiement test est sélectionné, puis cliquez sur Créer et déployer.
  11. Vous verrez un accusé de réception indiquant que votre nouveau proxy d'API et ont été créées avec succès et que le proxy d'API a été déployé dans votre environnement de test.
  12. Cliquez sur Modifier le proxy pour afficher la page Présentation de la proxy d'API.

Afficher les règles

  1. Dans l'éditeur de proxy d'API, cliquez sur l'onglet Développer. Comme vous le voyez, deux stratégies ont été ajoutées au flux de requêtes du proxy d'API: <ph type="x-smartling-placeholder">
      </ph>
    • Verify API Key (Vérifier la clé API) : vérifie l'appel d'API pour s'assurer qu'un La clé API est présente (envoyée en tant que paramètre de requête).
    • Suppression de la clé API du paramètre de requête:règle AffectMessage qui supprime la clé API après l'avoir vérifiée, afin qu'elle ne soit pas transmise et exposés inutilement.
  2. Cliquez sur l'icône de la règle Verify API Key (Vérifier la clé API) dans la vue du flux et examinez la configuration XML de la règle dans la vue de code inférieure. La L'élément <APIKey> indique à la règle où elle doit recherchez la clé API lorsque l'appel est effectué. Par défaut, il recherche en tant que paramètre de requête appelé apikey dans le requête:

    <APIKey ref="request.queryparam.apikey" />
    

    Le nom apikey est arbitraire et peut correspondre à n'importe quelle propriété. qui contient la clé API.

Essayer d'appeler l'API

Au cours de cette étape, vous allez effectuer un appel d'API réussi directement vers la cible vous ferez un appel d'échec vers le proxy de l'API pour voir comment il est protégé par les politiques.

  1. Opération réussie

    Dans un navigateur Web, accédez à l'adresse suivante. Il s'agit du service cible que le proxy d'API est configuré pour transférer la demande, mais vous allez l'atteindre directement pour le moment:

    http://mocktarget.apigee.net
    

    Vous devriez obtenir cette réponse indiquant que l'opération a réussi : Hello, Guest!

  2. Échec

    Essayez maintenant d'appeler votre proxy d'API :

    http://ORG_NAME-test.apigee.net/helloapikey
    

    en remplaçant ORG_NAME par le nom de votre Organisation en périphérie

    Sans la règle "Verify API Key" (Vérifier la clé API), cet appel vous donne que pour l'appel précédent. Mais dans ce cas, vous devriez obtenir la réponse d'erreur suivante:

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}
    

    ce qui signifie que vous n'avez pas transmis de clé API valide (comme un paramètre de requête).

Au cours des étapes suivantes, vous allez ajouter un produit d'API.

Ajouter un produit d'API

Pour ajouter un produit API à l'aide de l'interface utilisateur Apigee, procédez comme suit :

  1. Sélectionnez Publier > Produits API.
  2. Cliquez sur Ajouter un produit API.
  3. Saisissez les informations détaillées sur le produit pour votre produit API.

    Champ Description
    Nom Nom interne du produit d'API. À ne pas faire des caractères spéciaux dans le nom.
    Remarque:Vous ne peut pas modifier le nom une fois le produit API créé. Pour Exemple : helloworld_apikey-Product.
    Nom à afficher Nom à afficher du produit d'API. Le nom à afficher est utilisé dans et vous pouvez le modifier à tout moment. S'il n'est pas spécifié, le La valeur du nom sera utilisée. Ce champ est renseigné automatiquement à l'aide de la propriété Valeur du nom ; vous pouvez modifier ou supprimer son contenu. L'écran peut contenir des caractères spéciaux. Par exemple : helloworld_apikey-Product
    Description Description du produit API. Par exemple, Test product for tutorial.
    Environnement Environnements auxquels le produit d'API autorise l'accès. Par exemple, test ou prod.
    Accès Sélectionnez Publique.
    Approuver automatiquement les requêtes d'accès Activer l'approbation automatique des demandes de clés pour cette API depuis n'importe quelle application.
    Quota Ignorez ce champ dans ce tutoriel.
    Champs d'application OAuth autorisés Ignorez ce champ dans ce tutoriel.
  4. Dans la section Ressources d'API, sélectionnez le proxy d'API que vous venez de créé. Par exemple, helloworld_apikey.
  5. Cliquez sur Ajouter.
  6. Dans la section Chemins d'accès, ajoutez le chemin d'accès "/".
  7. Cliquez sur Ajouter.
  8. Cliquez sur Enregistrer.

Au cours des étapes suivantes, vous obtiendrez la clé API requise.

Ajouter un développeur et une application à votre organisation

Nous allons ensuite simuler le workflow d'un développeur pour utiliser vos API. Un développeur aura une ou plusieurs applications qui appellent vos API, et chaque application obtient une clé API unique. Ainsi, en tant que fournisseur d'API, un contrôle plus précis de l'accès à vos API et des rapports plus précis sur Trafic API par application.

Créer un développeur

Pour créer un développeur, procédez comme suit :

  1. Sélectionnez Publier > Développeurs dans le menu.
  2. Cliquez sur + Développeur.
  3. Saisissez les informations suivantes dans la fenêtre "New Developer" (Nouveau développeur) :

    Dans ce champ saisir
    First Name (Prénom) Keyser
    Nom Soze
    Nom d'utilisateur keyser
    Adresse e-mail keyser@example.com
  4. Cliquez sur Create (Créer).

Enregistrer une application

Pour enregistrer une application de développeur, procédez comme suit :

  1. Sélectionnez Publier > Applications.
  2. Cliquez sur + App (+ Application).
  3. Saisissez la commande suivante dans la fenêtre New App (Nouvelle application) :

    p
    Dans ce champ procédez comme suit
    Nom et Nom à afficher Saisissez : keyser_app
    Entreprise/Développeur Sélectionnez Developer.
    Développeur Sélectionnez Keyser Soze (keyser@example.com).
    URL de rappel et Remarques Laissez le champ vide
  4. Dans la section Credentials (Identifiants), sélectionnez Never (Jamais) dans Menu Expiration. Les identifiants de cette application n'expirent jamais.
  5. Sous Produits, cliquez sur Ajouter un produit.
  6. Sélectionnez helloworld_apikey-Product.
  7. Cliquez sur Ajouter.
  8. Cliquez sur Créer en haut à droite de Informations sur l'application. pour enregistrer votre travail.

Obtenir la clé API

Pour obtenir la clé API, procédez comme suit :

  1. Sur la page Applications (Publier > Applications), cliquez sur keyser_app.
  2. Sur la page keyser_app, cliquez sur Afficher à côté de Clé. dans la section Credentials (Identifiants). Dans la section Product (Produit), Notez que la clé est associée à helloworld_apikey

    pour en savoir plus.
  3. Sélectionnez et copiez la clé. Vous l'utiliserez à l'étape suivante.

Appeler l'API avec une clé

Maintenant que vous disposez d'une clé API, vous pouvez l'utiliser pour appeler le proxy d'API. Entrée dans votre navigateur Web. Remplacez le nom de votre organisation Edge pour ORG_NAME, et la clé API pour API_KEY ci-dessous. Assurez-vous que le paramètre de requête ne contient pas d'espaces supplémentaires.

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

À présent, lorsque vous appelez le proxy d'API, vous devez obtenir la réponse suivante: Hello, Guest!

Félicitations ! Vous avez créé un proxy d'API et l'avez protégé sans exiger l'inclusion d'une clé API valide dans l'appel.

Notez qu'en général, il est déconseillé de transmettre une clé API en tant que de requête. Vous devriez envisager <ph type="x-smartling-placeholder"></ph> en les transmettant plutôt dans l'en-tête HTTP.

Bonne pratique: Transmettre la clé dans l'en-tête HTTP

Au cours de cette étape, vous allez modifier le proxy pour qu'il recherche la clé API dans un intitulé x-apikey.

  1. Modifiez le proxy d'API. Sélectionnez Développer > Proxys d’API > helloworld_apikey et accéder à la vue Develop (Développer).
  2. Sélectionnez la règle Verify API Key (Vérifier la clé API) et modifiez le fichier XML de stratégie pour indiquer la règle à examiner dans header plutôt que dans queryparam:

    <APIKey ref="request.header.x-apikey"/>
    
  3. Enregistrez le proxy d'API pour déployer la modification.
  4. Effectuez l'appel d'API suivant à l'aide de cURL pour transmettre la clé API en tant que intitulé x-apikey. N'oubliez pas de remplacer le nom de l'organisation.

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

Notez que pour effectuer la modification dans son intégralité, vous devez également configurer Règle assignMessage pour supprimer l'en-tête au lieu du paramètre de requête. Exemple :

<Remove>
<Headers>
    <Header name="x-apikey"/>
</Headers>
</Remove>
<ph type="x-smartling-placeholder">

Articles associés

Voici quelques articles directement liés à ce tutoriel :

Pour aller plus loin, protéger les API avec des clés API n'est qu'une partie de l'équation. Souvent, La protection des API implique des mesures de sécurité supplémentaires telles que OAuth.

OAuth est un protocole ouvert qui, en bref, échange les identifiants (comme le nom d'utilisateur et le mot de passe) pour des jetons d'accès. Les jetons d'accès sont de longues chaînes aléatoires pouvant être transmises autour d'un message d'une application à l'autre, sans compromettre les identifiants d'origine. Accès les jetons ont souvent une durée de vie courte, de nouveaux sont donc toujours générés.