Cette page s'applique à Apigee et à Apigee hybrid.
Consultez la documentation d'Apigee Edge.
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 requis pour une stratégie VerifyAPIKey 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 règle 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 stratégie
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 (PreFlow
) 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://apigee.googleapis.com/v1/organizations/$ORG/developers/$DEVELOPER_EMAIL/apps/$APP \ -H "Authorization: Bearer $TOKEN"
Où $TOKEN
est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les options curl
utilisées dans cet exemple, consultez la section Utiliser curl. Pour obtenir une description des variables d'environnement utilisées, consultez la section Définir des variables d'environnement pour les requêtes API Apigee.
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://apitest.examplepetstore.com/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://apitest.examplepetstore.com/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://apitest.examplepetstore.com/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"
Résultats dans :
OAuth Failure : Consumer Key is Invalid