<ph type="x-smartling-placeholder"></ph>
Vous consultez la documentation Apigee Edge.
Accédez à la page
Documentation sur Apigee X. En savoir plus
Quoi
La règle de vérification des clés API vous permet d'appliquer la validation des clés API lors de l'exécution, afin de n'autoriser que les applications disposant de clés API approuvées à accéder à vos API. Cette règle garantit que les clés API sont valides, n'ont pas été révoquées et qu'elles sont autorisées à consommer les ressources spécifiques associées à vos produits d'API.
Exemples
Clé dans le paramètre de requête
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.queryparam.apikey" /> </VerifyAPIKey>
Dans cet exemple, la règle s'attend à trouver la clé API dans une variable de flux appelée request.queryparam.apikey
. La variable request.queryparam.{name}
est une variable de flux Edge standard qui est renseignée avec la valeur d'un paramètre de requête transmis
dans la requête du client.
La commande curl
suivante transmet la clé API dans un paramètre de requête :
curl http://myorg-test.apigee.net/mocktarget?apikey=IEYRtW2cb7A5Gs54A1wKElECBL65GVls
Clé dans l'en-tête
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.header.x-apikey" /> </VerifyAPIKey>
Dans cet exemple, la règle s'attend à trouver la clé API dans une variable de flux appelée request.header.x-apikey
. La variable request.header.{name}
est une variable de flux Edge standard qui est renseignée avec la valeur d'un en-tête transmis
dans la requête du client.
La commande cURL suivante montre comment transmettre la clé API dans un en-tête :
curl "http://myorg-test.apigee.net/mocktarget" -H "x-apikey:IEYRtW2cb7A5Gs54A1wKElECBL65GVls"
Clé dans la variable
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="requestAPIKey.key"/> </VerifyAPIKey>
La clé peut référencer toute variable contenant la clé. La règle de cet exemple extrait la clé API d'une variable nommée requestAPIKey.key.
C'est à vous de décider comment la variable est renseignée. Par exemple, vous pouvez utiliser la règle Extract Variables pour renseigner requestAPIKey.key à partir d'un paramètre de requête nommé myKey, comme illustré ci-dessous :
<ExtractVariables async="false" continueOnError="false" enabled="true" name="SetAPIKeyVar"> <Source>request</Source> <QueryParam name="myKey"> <Pattern ignoreCase="true">{key}</Pattern> </QueryParam> <VariablePrefix>requestAPIKey</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
Règle d'accès pour les variables de flux
<AssignMessage async="false" continueOnError="false" enabled="true" name="accessverifyvars"> <AssignVariable> <Name>devFirstName</Name> <Ref>verifyapikey.verify-api-key.developer.firstName</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>devLastName</Name> <Ref>verifyapikey.verify-api-key.developer.lastName</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>devEmail</Name> <Ref>verifyapikey.verify-api-key.developer.email</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Edge renseigne automatiquement un ensemble de variables de flux lors de l'exécution de la vérification de la clé API pour obtenir une clé API valide. Vous pouvez utiliser ces variables pour accéder à des informations telles que le nom de l'application, l'ID de l'application, et des informations sur le développeur ou l'entreprise qui a enregistré l'application. Dans l'exemple ci-dessus, vous utilisez la règle d'attribution des messages pour accéder au prénom, au nom et à l'adresse e-mail du développeur après l'exécution de la vérification des clés API.
Ces variables ont toutes le préfixe :
verifyapikey.{policy_name}
Dans cet exemple, le nom de la règle de vérification des clés API est "verify-api-key". Par conséquent, vous référencez le prénom du développeur à l'origine de la requête en accédant à la variable verifyapikey.verify-api-key.developer.firstName.
.
Apprendre Edge
À propos de la stratégie Vérifier la clé API
Lorsqu'un développeur enregistre une application sur Edge, Edge génère automatiquement une clé client et par paire secrète. Vous pouvez voir la clé client et la paire secrète de l'application dans l'interface utilisateur Edge ou y accéder de l'API Edge.
Au moment de l'enregistrement de l'application, le développeur sélectionne un ou plusieurs produits d'API à associer à l'application, où un produit d'API est un ensemble de ressources accessibles via des proxys d'API. Le développeur transmet ensuite la clé API (clé client) dans toutes les requêtes à une API dans un produit d'API associé à l'application. Consultez la section Présentation du processus de publication pour en savoir plus.
Les clés API peuvent être utilisées comme jetons d'authentification, ou pour obtenir des jetons d'accès OAuth. Dans OAuth, les clés API sont appelées "ID client". Les noms peuvent être utilisés de manière interchangeable. Pour en savoir plus, consultez la Page d'accueil OAuth.
Edge renseigne automatiquement un ensemble de variables de flux lors de l'exécution de la stratégie Vérifier la clé API. Consultez la section Variables de flux ci-dessous pour en savoir plus.
Documentation de référence des éléments
Vous trouverez ci-dessous les éléments et les attributs que vous pouvez configurer sur cette règle :
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key-1"> <DisplayName>Custom label used in UI</DisplayName> <APIKey ref="variable_containing_api_key"/> </VerifyAPIKey>
Attributs <VerifyAPIKey>
L'exemple suivant montre les attributs du tag <VerifyAPIKey>
:
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key-1">
Le tableau suivant décrit les attributs communs à tous les éléments parents des règles :
Attribut | Description | Par défaut | Présence |
---|---|---|---|
name |
Nom interne de la règle. La valeur de l'attribut Vous pouvez également utiliser l'élément |
ND | Valeur |
continueOnError |
Définissez sur Définissez sur |
faux | Facultatif |
enabled |
Définissez sur Définissez sur |
vrai | Facultatif |
async |
Cet attribut est obsolète. |
faux | Obsolète |
Élément <DisplayName>
Utilisez-le, en plus de l'attribut name
, pour appliquer un libellé à la règle dans l'éditeur de proxys de l'interface de gestion en utilisant un nom différent, en langage naturel.
<DisplayName>Policy Display Name</DisplayName>
Par défaut |
ND Si vous omettez cet élément, la valeur de l'attribut |
---|---|
Présence | Facultatif |
Type | Chaîne |
Élément <APIKey>
Cet élément spécifie la variable de flux contenant la clé API. En règle générale, le client envoie la clé API dans un paramètre de requête, un en-tête HTTP ou un paramètre de formulaire. Par exemple, si la clé est envoyée dans un en-tête nommé x-apikey
, la clé apparaît dans la variable : request.header.x-apikey
Par défaut | N/A |
---|---|
Présence | Requis |
Type | Chaîne |
Attributs
Le tableau suivant décrit les attributs de l'élément <APIKey>
Attribut | Description | Par défaut | Présence |
---|---|---|---|
ref |
Référence à la variable contenant la clé API. Un seul emplacement est autorisé par règle. |
ND | Obligatoire |
Exemples
Dans ces exemples, la clé est transmise dans les paramètres et un en-tête appelé x-apikey
.
En tant que paramètre de requête :
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.queryparam.x-apikey"/> </VerifyAPIKey>
En tant qu'en-tête HTTP :
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.header.x-apikey"/> </VerifyAPIKey>
En tant que paramètre de formulaire HTTP :
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.formparam.x-apikey"/> </VerifyAPIKey>
Schémas
Variables de flux
Lorsqu'une règle Vérifier la clé API est appliquée à une clé API valide, Edge remplit un ensemble de flux variables. Ces variables sont disponibles pour les règles ou le code exécutés plus tard dans le flux, et sont souvent utilisées pour effectuer un traitement personnalisé en fonction des attributs de la clé API, tels que le nom de l'application, le produit d'API utilisé pour autoriser la clé, ou les attributs personnalisés de la clé API.
La règle insère plusieurs types de variables de flux, y compris les suivants :
- Général
- Application
- Développeur
- Société
- Analyse
Chaque type de variable de flux comporte un préfixe différent. Toutes les variables sont des valeurs scalaires, hormis celles spécifiquement désignées comme tableaux.
Variables de flux générales
Le tableau suivant répertorie les variables de flux générales renseignées par la règle de vérification des clés API. Ces variables ont toutes le préfixe :
verifyapikey.{policy_name}
Par exemple : verifyapikey.{policy_name}.client_id
Les variables disponibles sont les suivantes :
Variable | Description |
---|---|
client_id |
Clé client (également appelée clé API ou clé d'application) fournie par l'application à l'origine de la requête. |
client_secret |
Secret client associé à la clé client. |
redirection_uris |
Tout URI de redirection dans la requête. |
developer.app.id |
ID de l'application de développeur à l'origine de la requête. |
developer.app.name |
Nom de l'application de développeur à l'origine de la requête. |
developer.id |
ID du développeur enregistré en tant que propriétaire de l'application à l'origine de la requête. |
developer.{custom_attrib_name} |
Tous les attributs personnalisés dérivés du profil de clé d'application. |
DisplayName |
Valeur de l'attribut <DisplayName> de la règle. |
failed |
Défini sur "true" en cas d'échec de la validation de clé API. |
{custom_app_attrib} |
Tout attribut personnalisé dérivé du profil de l'application Spécifie le nom de l'attribut personnalisé. |
apiproduct.name* |
Nom du produit d'API utilisé pour valider la requête. |
apiproduct.{custom_attrib_name}* |
Tout attribut personnalisé dérivé du profil de produit d'API. |
apiproduct.developer.quota.limit* |
Limite de quota définie sur le produit d'API, le cas échéant. |
apiproduct.developer.quota.interval* |
Intervalle de quota défini sur le produit d'API, le cas échéant. |
apiproduct.developer.quota.timeunit* |
Unité de temps du quota défini sur le produit d'API, le cas échéant. |
* Les variables de produits API sont renseignées automatiquement si les produits API sont
configurés avec un environnement, des proxys et des ressources valides (issus
proxy.pathsuffix ). Pour obtenir des instructions sur la configuration des produits d'API, consultez
Utilisation de la périphérie
de gestion des API pour publier des API. |
Variables de flux d'application
Les variables de flux suivantes contenant des informations sur l'application sont renseignées par la règle. Ces variables ont toutes le préfixe :
verifyapikey.{policy_name}.app
.
Exemple :
verifyapikey.{policy_name}.app.name
Les variables disponibles sont les suivantes :
Variable | Description |
---|---|
name |
Nom de l'application. |
id |
ID de l'application. |
accessType |
Non utilisé par Apigee. |
callbackUrl |
URL de rappel de l'application. En général utilisé uniquement pour OAuth. |
DisplayName |
Nom à afficher de l'application. |
status |
État de l'application, tel que "approuvé" ou "révoqué". |
apiproducts |
Tableau contenant la liste des produits d'API associés à l'application. |
appFamily |
Toute famille d'applications contenant l'application, ou "par défaut". |
appParentStatus |
État du parent de l'application, tel que "actif" ou "inactive". |
appType |
Type d'application, "Entreprise" ou "Développeur". |
appParentId |
ID de l'application parente. |
created_at |
Date et heure de création de l'application. |
created_by |
Adresse e-mail du développeur qui a créé l'application. |
last_modified_at |
Date et heure de la dernière mise à jour de l'application. |
last_modified_by |
Adresse e-mail du développeur qui a mis à jour l'application pour la dernière fois. |
{app_custom_attributes} |
Tout attribut d'application personnalisé. Spécifie le nom de l'attribut personnalisé. |
Variables de flux de développeur
Les variables de flux suivantes contenant des informations sur le développeur sont renseignées par la règle. Ces variables ont toutes le préfixe :
verifyapikey.{policy_name}.developer
Exemple :
verifyapikey.{policy_name}.developer.id
Les variables disponibles sont les suivantes :
Variable | Description |
---|---|
id |
Renvoie {org_name}@@@{developer_id}. |
userName |
Nom d'utilisateur du développeur. |
firstName |
Prénom du développeur. |
lastName |
Nom du développeur. |
email |
Adresse e-mail du développeur. |
status |
État du développeur (actif, inactif ou login_lock). |
apps |
Tableau des applications associées au développeur. |
created_at |
Date et heure de création du développeur. |
created_by |
Adresse e-mail de l'utilisateur qui a créé le développeur. |
last_modified_at |
Date et heure de la dernière modification du développeur. |
last_modified_by |
Adresse e-mail de l'utilisateur qui a modifié le développeur. |
{developer_custom_attributes} |
Tout attribut de développeur personnalisé. Spécifie le nom de l'attribut personnalisé. |
Company |
Nom de l'entreprise, le cas échéant, associée au développeur. |
Variables de flux de l'entreprise
Les variables de flux suivantes contenant des informations sur l'entreprise sont renseignées par la règle. Ces variables ont toutes le préfixe :
verifyapikey.{policy_name}.company
Exemple :
verifyapikey.{policy_name}.company.name
Les variables disponibles sont les suivantes :
Variable | Description |
---|---|
name |
Nom de l'entreprise. |
displayName |
Nom à afficher de l'entreprise. |
id |
ID de l'entreprise. |
apps |
Tableau contenant la liste des applications d'entreprise. |
appOwnerStatus |
État du propriétaire de l'application (actif, inactif ou login_lock).
|
created_at |
Date et heure de création de l'entreprise. |
created_by |
Adresse e-mail de l'utilisateur qui a créé l'entreprise. |
last_modified_at |
Date et heure de la dernière modification de l'entreprise. |
last_modified_by |
Adresse e-mail de l'utilisateur qui a modifié l'entreprise pour la dernière fois. |
{company_custom_attributes} |
Tout attribut d'entreprise personnalisé. Spécifie le nom de l'attribut personnalisé. |
Variables de données analytiques
Les variables suivantes sont automatiquement renseignées dans Analytics lorsqu'une règle de vérification des clés API est appliquée pour une clé API valide. Ces variables ne sont renseignées que par la règle de vérification des clés API et les règles OAuth.
Les variables et valeurs peuvent être utilisées comme dimensions pour créer des rapports Analytics et permettre plus de visibilité sur les modèles de consommation par les développeurs et les applications.
- apiproduct.name
- developer.app.name
- client_id
- developer.id
Informations de référence sur les erreurs
Cette section décrit les codes d'erreur et les messages d'erreur qui sont renvoyés, ainsi que les variables d'erreur définies par Edge lorsque cette stratégie déclenche une erreur. Ces informations sont importantes si vous développez des règles de défaillance afin de gérer les pannes. Pour en savoir plus, consultez les pages Ce que vous devez savoir à propos des erreurs liées aux règles et Gérer les pannes.
Erreurs d'exécution
Ces erreurs peuvent se produire lors de l'exécution de la règle.
Code d'erreur | État HTTP | Cause |
---|---|---|
keymanagement.service.CompanyStatusNotActive |
401 | L'entreprise associée à l'application de développeur qui possède la clé API que vous utilisez est à l'état "inactif". Lorsque l'état d'une entreprise est défini sur "inactif", vous ne pouvez pas accéder aux développeurs ni aux applications associées à cette entreprise. Un administrateur de l'entreprise peut modifier le statut d'une entreprise à l'aide de l'API de gestion. Consultez la section Définir l'état d'une entreprise. |
keymanagement.service.DeveloperStatusNotActive |
401 |
Le développeur ayant créé l'application de développeur disposant de la clé API que vous utilisez est à l'état "inactif". Lorsque l'état d'un développeur d'applications est défini sur "inactif", toutes les applications de développeur créées par ce développeur sont désactivées. Un administrateur disposant des autorisations appropriées (par exemple, administrateur de l'organisation) peut modifier l'état d'un développeur de différentes manières :
|
keymanagement.service.invalid_client-app_not_approved |
401 | L'application de développeur associée à la clé API est révoquée. Une application révoquée ne peut pas n'accède à aucun produit d'API et ne peut appeler aucune API gérée par Apigee Edge. Un administrateur de l'entreprise peut modifier l'état d'une application de développeur à l'aide de l'API de gestion. Consultez la section Approuver ou révoquer l'application de développeur |
oauth.v2.FailedToResolveAPIKey |
401 | La règle s'attend à trouver la clé API dans une variable spécifiée dans l'élément <APIKey> de la règle. Cette erreur se produit lorsque la variable attendue n'existe pas (elle ne peut pas être résolue). |
oauth.v2.InvalidApiKey |
401 | Edge a reçu une clé d'API qui n'est pas valide. Lorsque Edge recherche la clé dans son la base de données, elle doit correspondre exactement à celle qui a été envoyée dans la requête. Si l'API a fonctionné précédemment, assurez-vous que la clé n'a pas été générée de nouveau. Si la clé a été regénérée, cette erreur s'affiche si vous essayez d'utiliser l'ancienne clé. Pour en savoir plus, consultez la section Enregistrer des applications et gérer les clés API. |
oauth.v2.InvalidApiKeyForGivenResource |
401 | Edge a reçu une clé API qui est valide. Toutefois, elle ne correspond pas clé approuvée dans l'Application de développement associée à votre proxy d'API via un produit. |
Erreurs de déploiement
Ces erreurs peuvent se produire lorsque vous déployez un proxy contenant cette règle.
Nom de l'erreur | Cause |
---|---|
SpecifyValueOrRefApiKey |
Aucune valeur ou clé n'est spécifiée pour l'élément <APIKey> . |
Variables de panne
Ces variables sont définies lorsqu'une erreur d'exécution se produit. Pour en savoir plus, consultez la section Ce que vous devez savoir sur les erreurs liées aux règles.
Variables | Où | Exemple |
---|---|---|
fault.name="fault_name" |
fault_name est le nom de l'erreur, tel qu'indiqué dans le tableau Erreurs d'exécution ci-dessus. Le nom d'erreur est la dernière partie du code d'erreur. | fault.name Matches "FailedToResolveAPIKey" |
oauthV2.policy_name.failed |
policy_name est le nom spécifié par l'utilisateur de la règle qui a provoqué l'erreur. | oauthV2.VK-VerifyAPIKey.failed = true |
Exemple de réponses d'erreur
{ "fault":{ "faultstring":"Invalid ApiKey", "detail":{ "errorcode":"oauth.v2.InvalidApiKey" } } }
{ "fault":{ "detail":{ "errorcode":"keymanagement.service.DeveloperStatusNotActive" }, "faultstring":"Developer Status is not Active" } }
Exemple de règle de défaillance
<FaultRule name="FailedToResolveAPIKey"> <Step> <Name>AM-FailedToResolveAPIKey</Name> </Step> <Condition>(fault.name Matches "FailedToResolveAPIKey") </Condition> </FaultRule>