En esta página se proporciona información general sobre las claves de API y la autenticación: cómo se usan, las diferencias entre ellas y los casos en los que deberías plantearte usar claves de API.
Las claves de API son para proyectos y la autenticación es para usuarios
Cloud Endpoints gestiona tanto las claves de API como los esquemas de autenticación, como Firebase o Auth0. La principal diferencia entre ambos es la siguiente:
Las claves de API identifican el proyecto (la aplicación o el sitio) que llama a una API.
Los tokens de autenticación identifican a un usuario (la persona) que está usando la aplicación o el sitio.
Las claves de API proporcionan autorización de proyectos
Para decidir qué esquema es el más adecuado, es importante saber qué pueden ofrecer las claves de API y la autenticación.
Las claves de API proporcionan
Identificación del proyecto: identifica la aplicación o el proyecto que llama a esta API.
Autorización del proyecto: comprueba si se ha concedido acceso a la aplicación que hace la llamada para llamar a la API y si ha habilitado la API en su proyecto.
Las claves de API no son tan seguras como los tokens de autenticación (consulta la sección Seguridad de las claves de API), pero identifican la aplicación o el proyecto que llama a una API. Se generan en el proyecto que hace la llamada y puedes restringir su uso a un entorno, como un intervalo de direcciones IP o una aplicación Android o iOS.
Al identificar el proyecto que llama, puedes usar claves de API para asociar información de uso a ese proyecto. Las claves de API permiten que Cloud Endpoints Frameworks rechace las llamadas de proyectos a los que no se les haya concedido acceso o que no estén habilitados en la API.Autenticación de usuarios
Por el contrario, los esquemas de autenticación suelen tener dos finalidades:
Autenticación de usuarios: verifica de forma segura que el usuario que llama es quien dice ser.
Autorización de usuario: comprueba si el usuario debería tener acceso para enviar esta solicitud.
Los esquemas de autenticación proporcionan una forma segura de identificar al usuario que llama. Endpoints también comprueba el token de autenticación para verificar que tiene permiso para llamar a una API. En función de esa autenticación, el servidor de la API decide si autoriza una solicitud.
Si necesitas identificar al usuario que hace la llamada, consulta Autenticar usuarios.
Aunque las claves de API identifican el proyecto que llama, no identifican al usuario que llama. Por ejemplo, si has creado una aplicación que llama a una API, una clave de API puede identificar la aplicación que hace la llamada, pero no la identidad de la persona que usa la aplicación.
Si necesitas una forma más segura de limitar qué proyectos o servicios pueden llamar a tu API, consulta Autenticación entre servicios.
Seguridad de las claves de API
Por lo general, las claves de API no se consideran seguras, ya que los clientes suelen tener acceso a ellas, lo que facilita que alguien robe una clave de API. Una vez que se roba la clave, no caduca, por lo que se puede usar de forma indefinida, a menos que el propietario del proyecto la revoque o la regenere. Aunque las restricciones que puedes definir en una clave de API mitigan este problema, hay enfoques mejores para la autorización.
Para ver ejemplos, consulta Autenticar usuarios.
Cuándo usar claves de API
Una API puede restringir algunos o todos sus métodos para que requieran claves de API. Es recomendable hacerlo si se da alguna de las siguientes situaciones:
Quieres bloquear el tráfico anónimo. Las claves de API identifican el tráfico de una aplicación para el productor de la API, en caso de que el desarrollador de la aplicación necesite trabajar con el productor de la API para depurar un problema o mostrar el uso de su aplicación.
Quieres controlar el número de llamadas que se hacen a tu API.
Quieres identificar patrones de uso en el tráfico de tu API. Puedes ver el uso de las aplicaciones en APIs y servicios.
Quieres filtrar los registros por clave de API.
Las claves de API no se pueden usar para lo siguiente:
Identificar usuarios concretos: las claves de API no identifican a los usuarios, sino a los proyectos.
Autorización segura.
Identificar a los creadores de un proyecto.
Infraestructura de servicios no proporciona un método para buscar proyectos directamente a partir de claves de API.