Actualmente estoy diseñando un modelo de API para usar. Un usuario tendrá una 'secret_api_key' y una 'public_api_key'. Enviarán una solicitud a mi servidor con la clave pública, los datos del formulario y luego un hash. El hash es el formulario de datos cifrados con la 'secret_api_key'.
Esto es para que el servidor vuelva a crear este hash ya que conoce el 'secret_api_key' y si los hashes son los mismos, entonces acepte la solicitud, de lo contrario, niegue.
Mi problema es que si alguien hiciera esto usando JavaScript, entonces tendrían que cifrar este 'en movimiento' en el navegador, lo que significa que necesitarán la 'secret_api_key' para hacerlo todo. Pero el 'secreto_api_clave' está destinado a mantenerse alejado de los ojos del público, por lo que cualquier persona podría mirar el script y ver la clave secreta.
¿Es esta una forma incorrecta de hacerlo? Sinceramente, no puedo pensar en una forma en la que puedas usar mi API en un navegador usando JavaScript (que sería el método principal en el que las personas usarían mi API)
Sé que con OAuth usted obtiene un 'access_token' que acaba de enviar con una solicitud, ¿seguramente alguien podría usar un sniffer de tráfico y reenviar las solicitudes con el mismo token de acceso? ¿O funciona OAuth de manera diferente?
Cualquier ayuda o sugerencia sería muy apreciada.
Gracias.