Si configuras un requisito de clave en tu API, se rechazan las solicitudes a la clase, la API o el método protegidos si no tienen una clave generada en tu proyecto o en otros proyectos que pertenezcan a desarrolladores a los que les hayas otorgado acceso para habilitar tu API. El proyecto en el que se creó la clave de API no se registra y no se agrega al encabezado de la solicitud. Sin embargo, puedes ver el Google Cloud proyecto con el que está asociado un cliente en la página Servicios de Endpoints , como se describe en Filtro para un proyecto de consumidor específico.
Si deseas obtener información sobre en qué Google Cloud proyecto se debe crear una clave de API, consulta Comparte API protegidas por claves de API.
Restringe el acceso a todos los métodos de la API
Si deseas que se requiera una clave de API para todas las llamadas a Ia API, agrega apiKeyRequired = AnnotationBoolean.TRUE a tu anotación @Api.
Por ejemplo:
@Api(
name = "echo",
version = "v1",
apiKeyRequired = AnnotationBoolean.TRUE
)
public class Echo {
//API class and methods...
}
Restringe el acceso a métodos de la API específicos
Si deseas que se requiera una clave de API para todas las llamadas hacia un método específico de la API, agrega apiKeyRequired = AnnotationBoolean.TRUE a tu anotación @ApiMethod.
Por ejemplo:
Si deseas que se requiera una clave de API para todas las llamadas hacia una clase específica de la API, agrega
apiKeyRequired = AnnotationBoolean.TRUE a tu @ApiClass
anotación.
Quitar la restricción de clave de API de un método
Para desactivar la validación de claves de API para una API o método de API, quita api_key_required=True (Python) o apiKeyRequired = AnnotationBoolean.TRUE (Java) de tu anotación o decorador de método o API. Luego, vuelve a compilarla y a implementarla.
Llamar a una API mediante una clave de API
Si una API o un método de API requiere una clave de API, proporciona la clave mediante un parámetro de consulta llamado key, como se muestra en este ejemplo con cURL:
curl \
-H "Content-Type: application/json" \
-X POST \
-d '{"message": "echo"}' \
"${HOST}/_ah/api/echo/v1/echo_api_key?key=${API_KEY}"
En el ejemplo anterior, HOST y API_KEY son variables que contienen el nombre del host de tu API y la clave de API, respectivamente. Reemplaza echo por el nombre de tu API y v1 por la versión de tu API.
Comparte API protegidas por claves de API
Las claves de API están asociadas al Google Cloud proyecto en el que se crearon. Si decidiste requerir una clave de API para acceder a la API, el Google Cloud proyecto en el que se cree la clave de API dependerá de las respuestas a las siguientes preguntas:
- ¿Necesitas distinguir entre los emisores de tu API de modo que puedas usar características de Endpoints, como las cuotas?
- ¿Todos los emisores de la API tienen sus proyectos Google Cloud propios?
- ¿Necesitas configurar restricciones de clave de API diferentes?
Puedes usar el siguiente árbol de decisión como guía para decidir en qué Google Cloud proyecto se creará la clave de API.
Otorga permisos para habilitar la API
Cuando necesites distinguir entre los emisores de tu API y cada emisor tiene su propio Google Cloud proyecto, puedes otorgar a las principales permiso para habilitar la API en su propio Google Cloud proyecto. De esta forma, los usuarios pueden crear su propia clave de API para usarla en tu API.
Por ejemplo, supongamos que tu equipo creó una API de uso interno para varios programas cliente de tu empresa y cada programa cliente tiene su propio Google Cloud proyecto. Si necesitas distinguir entre los emisores de la API, se debe crear una clave de API para cada emisor en un proyecto diferente Google Cloud . Puedes otorgar permiso a tus compañeros de trabajo para habilitar la API en el Google Cloud proyecto con el que está asociado el programa cliente.
Para permitir que los usuarios creen sus propias claves de API, haz lo siguiente:
- En el Google Cloud proyecto en el que está configurada la API, otorga a cada usuario el permiso para habilitar tu API.
- Informa a los usuarios que pueden habilitar la API en su propio Google Cloud proyecto y crear una clave de API.
Crea un proyecto por separado Google Cloud para cada emisor
Cuando necesitas distinguir entre los emisores de la API y no todos los emisores tienen Google Cloud proyectos, puedes crear un Google Cloud proyecto separado y una clave de API para cada emisor. Antes de crear los proyectos, piensa bien qué nombres de proyecto usarás, a fin de poder identificar con facilidad al emisor asociado con el proyecto.
Por ejemplo, supongamos que la API tiene clientes externos y no tienes idea de cómo se crearon los programas cliente que llaman a la API. Tal vez algunos de los clientes usen Google Cloud servicios y tengan un Google Cloud proyecto, y tal vez otros no. Para distinguir entre los emisores, debes crear un proyecto separado Google Cloud y una clave de API para cada emisor.
Para crear un proyecto separado Google Cloud y una clave de API para cada emisor, haz lo siguiente:
- Crea un proyecto por separado para cada emisor.
- En cada proyecto, habilita tu API y crea una clave de API.
- Proporciona la clave de API a cada emisor.
Crear una clave de API para cada emisor
Cuando no necesitas distinguir entre los emisores de tu API, pero quieres agregar restricciones de clave de API, puedes crear una clave de API separada para cada emisor en el mismo proyecto.
Para crear una clave de API para cada emisor en el mismo proyecto, haz lo siguiente:
- En el proyecto en el que está configurada la API o en un proyecto en el que la API esté habilitada, crea una clave de API para cada cliente que tenga las restricciones de clave de API que necesites.
- Proporciona la clave de API a cada emisor.
Crear una clave de API para todos los emisores
Cuando no necesitas distinguir entre los emisores de la API ni necesitas agregar restricciones de API, pero deseas requerir una clave de API de todos modos (por ejemplo, para impedir el acceso anónimo), puedes crear una sola clave de API que usarán todos los emisores.
Para crear una clave de API para todos los emisores, haz lo siguiente:- En el proyecto en el que está configurada tu API o en un proyecto en el que tu API esté habilitada, crea una clave de API para todos los emisores que tenga las restricciones de clave de API que necesites.
- Proporciona la misma clave de API a todos los emisores.