Como principiante en el desarrollo de API web y otras tecnologías web, me pregunto cuál podría ser el mejor enfoque para asegurar una herramienta en la interfaz de un cliente.
Digamos que estoy ofreciendo una herramienta que se puede usar en la interfaz de otro sitio web y querría asegurar su uso. Por lo tanto, un cliente debe registrarse, iniciar sesión en mi servidor y generar una clave API y un secreto. Luego el cliente implementa la herramienta en su sitio web. ¿Cómo puedo (o mejor, la herramienta) verificar que el cliente tenga una clave API válida y contar el uso de la herramienta? Si la clave no es válida o está bloqueada por mi servidor, la herramienta no funcionará. La función interna de probar y bloquear la herramienta no es una cuestión aquí. La pregunta es solo la verificación / autenticación / identificación.
El empaquetado de la clave API y el secreto directamente en el código de la interfaz no es una opción, supongo. Todo el mundo podía leerlo. Entonces, ¿cuál es el mejor patrón para alcanzar ese objetivo de autenticar el uso con las credenciales de los clientes? ¿Hay buenos recursos o documentación para ese problema específico? La mayor parte de lo que leí era sobre OAuth (con credenciales de usuario involucradas) y aplicaciones de cliente para escritorio o móvil (donde es más fácil ocultar las credenciales de cliente).
Edición 1:
En el caso de Google Maps, que usa solo una clave de API, recomiendan diferentes métodos para asegurar la clave y el acceso a API, como la limitación de URL y la regeneración periódica. También dicen que la clave debe ser proporcionada por variables de entorno o archivos fuera del código fuente.
El enfoque para asegurar una clave API de Google Maps parece estar en restringir la URL. ¿Pero es realmente la mejor práctica? ¿No es posible "simular" la URL para el código javascript ejecutado localmente y enviar toneladas de solicitudes para aumentar el recuento de uso para el propietario clave?
Google Maps: prácticas recomendadas para el uso seguro de claves API