En esta página, se proporciona información básica sobre las claves de API y la autenticación: cómo se utilizan, qué diferencias hay entre cada una y en qué situaciones se debe considerar su uso.
Las claves de API son para proyectos, la autenticación está destinada a los usuarios
Cloud Endpoints controla las claves de API y los esquemas de autenticación, como Firebase o Auth0. Estas son las diferencias más importantes entre ambas:
Las claves de API identifican el proyecto que realiza llamada (la aplicación o el sitio) que realiza la llamada a una API.
Los tokens de autenticación identifican un usuario (la persona) que usa la app o el sitio.
Las claves de API proporcionan la autorización del proyecto
Para decidir cuál es el esquema más indicado, es importante comprender lo que pueden proporcionar 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 realiza una llamada a esta API.
Autorización del proyecto: verifica si la aplicación que realiza la llamada tiene acceso para llamar a la API y si la habilitó en su proyecto.
Las claves de API no son tan seguras como los tokens de autenticación (consulta 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 realiza la llamada y su uso puede restringirse a un entorno, como un rango de direcciones IP o una app de Android o iOS.
Cuando se identifica el proyecto que realiza la llamada, puedes usar claves de API para asociar la información de uso con ese proyecto. Las claves de API permiten que el Proxy de servicio extensible (ESP) rechaza las llamadas de los proyectos que no tienen acceso o están habilitados en la API.Autenticación de usuarios
En cambio, los esquemas de autenticación suelen tener dos propósitos:
Autenticación del usuario: verifica de forma segura que el usuario que llama sea quien declara ser.
Autorización del usuario: comprueba si el usuario debería tener acceso para realizar 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 a fin de verificar si tiene permiso para llamar a una API. Según esa autenticación, el servidor de la API decidirá si autoriza una solicitud.
Si necesitas poder identificar al usuario que realiza la llamada, consulta Autenticación de usuarios.
Si bien las claves de API identifican el proyecto que realiza la llamada, no identifican al usuario que la realiza. Por ejemplo, si creaste una aplicación que llama a una API, una clave de API puede identificar la aplicación que realiza 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
En general, las claves de API no se consideran seguras, ya que suelen ser accesibles para los clientes, lo que facilita que alguien pueda robarlas. Una vez que se roba la clave, no tiene vencimiento, por lo que se puede usar de forma indefinida, a menos que el propietario del proyecto revoque o vuelva a generar la clave. Si bien las restricciones que puedes establecer en una clave de API solucionan esta situación, existen métodos mejores para autorizar.
Para obtener ejemplos, consulta Autentica usuarios.
Cuándo usar claves de API
Una API puede restringir algunos o todos sus métodos para que requieran claves de API. Tiene sentido hacer esto en los siguientes casos:
Si deseas bloquear el tráfico anónimo. Las claves de API identifican el tráfico de la 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.
Si deseas controlar la cantidad de llamadas realizadas a la API.
Si deseas identificar los patrones de uso en el tráfico de la API. Puedes consultar sobre el uso de la aplicación en API y servicios.
Si quieres filtrar los registros por clave de API.
Las claves de API no se pueden utilizar para:
Identificar usuarios individuales, ya que las claves de API no identifican usuarios, solo identifican proyectos.
Realizar autorizaciones seguras.
Identificar a los creadores de un proyecto.
La infraestructura de servicio no proporciona un método para buscar de manera directa proyectos a partir de claves de API.