Configurer la validation des clés API

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Vous pouvez configurer la validation de la clé API pour une API en associant une règle de type "Valider la clé API". Le seul paramètre obligatoire d'une stratégie "Valider la clé API" est l'emplacement attendu de la clé API dans la requête client. Le proxy de l'API vérifie l'emplacement que vous spécifiez et extrait la clé API. Si la clé API n'est pas présente à l'emplacement prévu, une erreur est générée et la requête est rejetée. Les clés API peuvent être situées dans un paramètre de requête, un paramètre de formulaire ou un en-tête HTTP.

Par exemple, la configuration de stratégie ci-dessous définit l'emplacement de clé attendu en tant que paramètre de requête nommé apikey. Une requête réussie doit présenter la clé API en tant que paramètre de requête ajouté à la requête, par exemple ?apikey=Y7yeiuhcbKJHD790.

Pour valider les clés API, créez la règle suivante :

<VerifyAPIKey name="APIKeyValidation">
  <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

Cette règle peut être associée à n'importe quelle API que vous devez protéger.

Pour obtenir une documentation complète sur ce type de règle, consultez la section Règle de vérification de clé d'API dans la rubrique de référence.

Les proxys d'API transmettent automatiquement tous les en-têtes HTTP et les paramètres de requête présents dans la requête. Par conséquent, une fois la clé API validée, il est judicieux de la supprimer du message afin que la clé API ne soit pas envoyée via le réseau au service de backend. Pour ce faire, utilisez une stratégie de type AssignMessage comme suit:

<AssignMessage name="StripApiKey">
    <DisplayName>Remove Query Param</DisplayName>
    <Remove>
        <QueryParams>
            <QueryParam name="apikey"/>
        </QueryParams>
    </Remove>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"></AssignTo>
</AssignMessage>

Rattachement de règle

Les règles doivent être associées à un flux de proxy d'API en tant qu'étapes de traitement. En appliquant la règle au flux préliminaire de requête, les clés API sont validées à chaque requête reçue par le proxy d'API à partir d'une application cliente. Après vérification, la clé API est supprimée de la requête sortante.

Associez les règles au point de terminaison Proxy du proxy d'API à protéger comme suit :

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>APIKeyValidation</Name></Step>
      <Step><Name>StripApiKey</Name></Step>
    </Request>
  </PreFlow>

Après avoir associé la règle, déployez le proxy d'API.

Envoyer une requête avec une clé API valide

En tant qu'administrateur de votre organisation, vous pouvez récupérer la clé API de n'importe quelle application comme suit :

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password 

Le profil d'application renvoyé pour cet appel fournit la clé client (clé API) et le code secret. La valeur de la clé client correspond à la valeur que vous utilisez pour la clé API dans votre requête adressée à l'API protégée.

Par exemple, une requête qui n'inclut pas de clé API entraîne une erreur d'autorisation.

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

Le message d'échec indique que la règle a été vérifiée pour une clé API, mais qu'elle n'a pas trouvé de clé valide :

OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey

Lorsque la clé client de l'application est incluse en tant que paramètre de requête, le résultat attendu est une autorisation réussie :

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

Le résultat attendu est une réponse réussie du service météorologique.

La modification de la valeur de la clé API dans la requête entraîne l'échec de l'autorisation :

$ curl http://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

Résultats dans :

OAuth Failure : Consumer Key is Invalid

Pour rappel, en tant qu'administrateur de votre organisation, vous pouvez récupérer la clé client d'une application enregistrée au sein d'une organisation :

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password