Desafortunadamente, creo que esto no es posible de una manera segura. Déjame explicarte por qué.
Desea que su aplicación frontend tenga una forma de identificarse con la API. En otras palabras, usted quiere autenticación.
Pero la autenticación requiere la existencia de algún tipo de datos secretos únicos que la aplicación frontend pueda usar para distinguirse de otras aplicaciones. Esto puede ser un secreto compartido (contraseña, "clave de API"), una clave de cifrado asimétrica privada o algo más todavía. Pero sea lo que sea, tiene que permanecer en secreto, ya que si otra aplicación puede copiarlo, puede pasar como su aplicación de frontend.
La pregunta es, ¿dónde vas a almacenar ese secreto?
Si está almacenado dentro del código de la aplicación en sí, o directamente accesible para él, es vulnerable a la ingeniería inversa o las vulnerabilidades en su aplicación de front-end, sin importar cuántas capas de direccionamiento criptográfico use para ocultarlo. Este es el defecto de seguridad fundamental que llevó a la falla de casi todos los esquemas DRM diseñados hasta la fecha.
Si se almacena en alguna ubicación a prueba de manipulaciones del equipo cliente (por ejemplo, el chip TPM, la instalación de administración de claves de confianza del sistema operativo), entonces la pregunta es: ¿cómo llega inicialmente? ¿Y cómo va a acceder a él desde el código Javascript, que tiene capacidades limitadas de acceso al sistema operativo de bajo nivel?
Si se almacena de forma remota, solo está cambiando el problema de la autenticación de la aplicación en otro lugar: ¿cómo se va a autenticar su aplicación de usuario en el servidor remoto? O, en otras palabras, ¿qué impide que otra aplicación acceda a ese servidor remoto exactamente de la misma manera?
Mi conclusión es que no hay una manera realmente segura de autenticar una parte del software JS. Tendrá que diseñar su API de una manera que sea segura frente a la entrada de clientes maliciosos y, si desea una manera de prohibir a los clientes comprometidos de todos modos, proporcione a los clientes "claves de API" revocables que pueda prohibir fácilmente en el lado del servidor. la forma en que la mayoría de los servicios web (y los nuevos DRM) lo hacen.