Actualmente estoy trabajando en una aplicación de reacción de una sola página. Esta aplicación no requerirá ningún inicio de sesión y estará disponible públicamente. Estoy haciendo una solicitud POST a un webhook de otra API a la que no tengo acceso y que no mantengo. Esta API me requirió enviar un token de autenticación a través de la POST. Me pregunto cómo puedo almacenar de forma segura este token para que no salga al mundo. Necesito enviarlo, ya que almacenarlo en una cookie que el back-end proporciona no es una opción. Almacenar en JWT no funcionará, ya que puedo decodificar eso sin el secreto.

¿Hay alguna forma de almacenar el token sin exponerlo al mundo?

Espero que el problema sea claro, si no, hágamelo saber y lo explicaré mejor.

¡Gracias por su tiempo a todos!

5
Timbo 23 ene. 2018 a las 13:30

3 respuestas

La mejor respuesta

Por lo general, tendría un servidor Express local ejecutándose y proxy la solicitud a través de eso.

Configuraría una ruta en su aplicación Express en la que PUBLICARÍA desde su front-end React, este controlador de ruta Express realiza la llamada a la API externa desde el lado del servidor que tiene el token para poner en el encabezado. Luego, la respuesta se devuelve a su front-end React sin que sepa nada sobre la API o los tokens externos.

8
Ben Barber 23 ene. 2018 a las 11:03

No puede almacenar el token en el front-end. o bien necesita usar cookies / sesión para almacenar el token. Si desea almacenar el token, debe cifrarlo y almacenarlo será la mejor opción.

Consulte aquí para comprender el mecanismo de token JWT

Si la aplicación web no tiene un inicio de sesión. no puede generar token sin detalles del usuario.

El token debe pasarse en el encabezado de la solicitud de mejores prácticas.

2
Japar Sathik 23 ene. 2018 a las 11:11

Si está utilizando create-react-app para crear una instancia de su proyecto React, ¿ha buscado usar una variable de entorno para almacenar el token? No es 100% seguro, marque aquí para los inconvenientes, pero puede ser una solución rápida sin una solicitud de proxy por separado. Puede crear un archivo .env (asegúrese de agregarlo a su .gitignore si usa git) en la raíz de su directorio y definir variables allí. Deben comenzar con REACT_APP, como REACT_APP_SECRET=1234 y luego se puede hacer referencia a ellos donde los necesite en su aplicación con process.env.REACT_APP_SECRET.

Lea más sobre los entornos en React aquí.

-1
Shirley 23 ene. 2018 a las 16:39
48399483