Si vous configurez une exigence de clé API dans votre API, toute requête concernant la méthode, la classe ou l'API ainsi protégées est rejetée, sauf si elle est assortie d'une clé générée au sein de votre projet ou dans un autre projet appartenant à un développeur auquel vous avez donné l'autorisation d'activer cette API. Le projet dans lequel la clé API a été créée n'est ni consigné, ni ajouté à l'en-tête de la requête. Toutefois, vous pouvez afficher le projet Google Cloud auquel un client est associé sur la page Services Endpoints, comme décrit dans la section Filtrer un projet pour un consommateur spécifique.
Pour plus d'informations sur le projet Google Cloud dans lequel une clé API doit être créée, consultez la section Partager des API protégées par une clé API.
Restreindre l'accès à toutes les méthodes d'une API
Si vous souhaitez qu'une clé API soit exigée pour tous les appels de l'API, ajoutez apiKeyRequired = AnnotationBoolean.TRUE
à votre annotation @Api.
Exemple :
@Api(
name = "echo",
version = "v1",
apiKeyRequired = AnnotationBoolean.TRUE
)
public class Echo {
//API class and methods...
}
Restreindre l'accès à certaines méthodes de l'API
Si vous souhaitez qu'une clé API soit exigée pour tous les appels d'une méthode donnée de l'API, ajoutez apiKeyRequired = AnnotationBoolean.TRUE
à votre annotation @ApiMethod.
Exemple :
Si vous souhaitez qu'une clé API soit exigée pour tous les appels d'une classe donnée de l'API, ajoutez apiKeyRequired = AnnotationBoolean.TRUE
à votre annotation @ApiClass
.
Supprimer la restriction de clé API pour une méthode
Pour désactiver la validation par clé API pour une API ou une méthode API, supprimez api_key_required=True
(Python) ou apiKeyRequired = AnnotationBoolean.TRUE
(Java) du décorateur ou de l'annotation de cette API ou de cette méthode, puis recompilez et redéployez.
Appeler une API à l'aide d'une clé API
Si une API ou une méthode API requiert une clé API, fournissez cette clé à l'aide d'un paramètre de requête nommé key
, comme indiqué dans cet exemple cURL :
curl \
-H "Content-Type: application/json" \
-X POST \
-d '{"message": "echo"}' \
"${HOST}/_ah/api/echo/v1/echo_api_key?key=${API_KEY}"
où HOST
et API_KEY
sont des variables contenant respectivement le nom de votre hôte et votre clé API. Remplacez echo
par le nom de votre API et v1
par la version de celle-ci.
Partager des API protégées par une clé API
Les clés API sont associées au projet Google Cloud dans lequel elles ont été créées. Si vous avez décidé d'exiger une clé API pour votre API, le projet Google Cloud dans lequel la clé API est créée dépend des réponses aux questions suivantes :
- Avez-vous besoin de distinguer les appelants de votre API pour pouvoir utiliser les fonctionnalités Endpoints comme les quotas ?
- Est-ce que tous les appelants de votre API ont leurs propres projets Google Cloud ?
- Avez-vous besoin de configurer différentes restrictions de clés API ?
L'arbre de décision suivant peut vous servir de guide pour choisir le projet Google Cloud dans lequel créer la clé API.
Accorder l'autorisation d'activer l'API
Lorsque vous devez faire la distinction entre les appelants de votre API et que chaque appelant dispose de son propre projet Google Cloud, vous pouvez autoriser les comptes principaux à activer l'API dans leur propre projet Google Cloud. De cette manière, les utilisateurs de votre API peuvent créer leur propre clé API à utiliser avec votre API.
Par exemple, supposons que votre équipe ait créé une API à usage interne pour différents programmes clients de votre entreprise, et que chaque programme client possède son propre projet Google Cloud. Pour faire la distinction entre les appelants de votre API, la clé API de chaque appelant doit être créée dans un projet Google Cloud différent. Vous pouvez autoriser vos collègues à activer l'API dans le projet Google Cloud auquel le programme client est associé.
Pour permettre aux utilisateurs de créer leur propre clé API :
- Dans le projet Google Cloud dans lequel votre API est configurée, accordez à chaque utilisateur l'autorisation d'activer votre API.
- Contactez les utilisateurs et faites-leur savoir qu'ils peuvent activer votre API dans leur propre projet Google Cloud et créer une clé API.
Créer un projet Google Cloud distinct pour chaque appelant
Lorsque vous devez faire la distinction entre les appelants de votre API et que ceux-ci n'ont pas tous de projet Google Cloud, vous pouvez créer une clé API et un projet Google Cloud distincts pour chaque appelant. Avant de créer ces projets, réfléchissez aux noms que vous allez leur donner, afin d'être en mesure d'identifier facilement l'appelant associé à chaque projet.
Par exemple, supposons que vous ayez des clients externes pour votre API, et que vous ne sachiez pas comment les programmes clients qui appellent celle-ci ont été créés. Certains clients utilisent peut-être les services Google Cloud et possèdent donc un projet Google Cloud, alors que d'autres non. Pour faire la distinction entre les appelants, vous devez créer une clé API et un projet Google Cloud distincts pour chacun d'eux.
Pour créer une clé API et un projet Google Cloud distincts pour chaque appelant :
- Créez un projet distinct pour chaque appelant.
- Dans chaque projet, activez votre API et créez une clé API.
- Donnez la clé API à chaque appelant.
Créer une clé API pour chaque appelant
Lorsque vous n'avez pas besoin de distinguer les appelants de votre API, mais que vous souhaitez ajouter des restrictions de clé API, vous pouvez créer une clé API distincte pour chaque appelant du même projet.
Pour créer une clé API pour chaque appelant dans le même projet :
- Soit dans le projet dans lequel votre API est configurée, soit dans un projet dans lequel votre API est activée, créez pour chaque client une clé API disposant des restrictions de clés API dont vous avez besoin.
- Donnez la clé API à chaque appelant.
Créer une clé API pour tous les appelants
Lorsque vous n'avez pas besoin de distinguer les appelants de votre API ni d'ajouter de restrictions d'API, mais que vous souhaitez quand même qu'une clé API soit exigée (pour empêcher l'accès anonyme, par exemple), vous pouvez créer une clé API que tous les appelants peuvent utiliser.
Pour créer une clé API pour tous les appelants :- Soit dans le projet dans lequel votre API est configurée, soit dans un projet dans lequel votre API est activée, créez une clé API pour tous les appelants.
- Donnez la même clé API à chaque appelant.