Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

129
Vistas
Cliente de dispositivo web de confianza

Tengo una API web pública para un SaaS. No tenemos cuentas de usuario para los usuarios, excepto para el administrador, simplemente porque los usuarios que usan el sistema a menudo son trabajadores o personal no permanente.

En su lugar, tenemos un número de cliente/cliente y un PIN que se utiliza para autenticar y configurar el cliente del navegador. El JWT autenticado se almacena en el navegador como cualquier otro token de acceso y se envía de vuelta al servidor junto con cada solicitud de API. Esto funciona bien, aunque entendemos que un actor malicioso podría potencialmente extraer este JWT y usarlo también para autenticarse de manera ilícita.

Ahora queremos agregar dos capas adicionales de seguridad: lista blanca de IP y dispositivos confiables.

Primero hemos introducido una lista blanca de IP. Esto es sencillo, simplemente verificamos la IP remota con una lista blanca creada por el administrador que está vinculada al número de cliente.

Ahora el problema está en la lista de dispositivos de confianza. Para cada número de cliente, debe haber una forma de confiar en un dispositivo para ese número de cliente específico. Por lo tanto, el cliente debe poder usar la API web solo en los dispositivos que tiene en la oficina. El escenario ideal sería que el administrador pueda emitir un certificado de "dispositivo de confianza" con una firma digital que firme algo así como " número de cliente + año + pin de cliente ". Luego, el administrador local debe importar este certificado/secreto manualmente en el dispositivo en el que se debe confiar.

Luego, para cada solicitud, nuestra aplicación de cliente web (a través de javascript) también envía esta firma con cada solicitud en un encabezado HTTP. Entiendo que esto también podría falsificarse, pero junto con la lista blanca de IP, evaluamos y creemos que debería ser lo suficientemente seguro para esta aplicación.

El problema ahora es, ¿cómo implementar eso? Hasta donde yo entiendo:

  • No puedo almacenar ese secreto en el navegador porque podría borrarse.
  • No puedo leer el sistema de archivos con javascript. ¿Almacenar el secreto en un archivo de texto?
  • No puedo acceder al almacén de certificados del dispositivo.

¿Cómo puedo gestionar (importar, almacenar y leer desde javascript) esta firma/certificado/secreto digital en el dispositivo cliente? El cliente web puede ser cualquier cosa, desde un iPad y un teléfono Android hasta un escritorio de Windows, Linux o iOS. Todas las llamadas web se realizan con SSL. No estamos ejecutando ninguna aplicación nativa en el dispositivo del cliente, solo el navegador.

about 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda