es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Token JWT vs Token de Sesión para React Native y React JS En el desarrollo de aplicaciones móviles y web utilizando React Native y React JS, es común utilizar tokens para gestionar la autenticación de los usuarios. Dos tipos de tokens comúnmente utilizados son el Token JWT (JSON Web Token) y el Token de Sesión. El Token JWT es un estándar abierto (RFC 7519) que permite representar reclamaciones entre dos partes de forma segura como un objeto JSON compacto y autónomo. Este token se utiliza para autenticar y autorizar solicitudes en aplicaciones móviles y web. El Token JWT contiene información codificada en formato JSON que incluye reclamaciones sobre el usuario y otros datos adicionales necesarios para la autenticación. Por otro lado, el Token de Sesión es un tipo de token que se crea cuando un usuario inicia sesión en una aplicación. Este token se almacena en el lado del servidor y se utiliza para identificar al usuario durante su sesión actual. El Token de Sesión se genera al autenticar al usuario y se guarda en una base de datos o en la memoria del servidor. La principal diferencia entre el Token JWT y el Token de Sesión radica en cómo se almacenan y validan. Mientras que el Token JWT se almacena en el cliente (normalmente en el almacenamiento local), el Token de Sesión se almacena en el servidor. Además, el Token JWT es autónomo y contiene toda la información necesaria para validar la autenticidad del usuario, mientras que el Token de Sesión requiere consultar el servidor para validar su autenticidad. En resumen, el Token JWT es un token autónomo que se utiliza para autenticar y autorizar solicitudes directamente en el cliente, mientras que el Token de Sesión se utiliza para identificar al usuario durante su sesión actual y requiere consultar el servidor para su validación. En conclusión, tanto el Token JWT como el Token de Sesión son opciones válidas para gestionar la autenticación en aplicaciones desarrolladas con React Native y React JS, y su elección depende de las necesidades y requisitos específicos de cada proyecto.

Estamos en proceso de construcción de una aplicación para clientes para una organización, con la pila tecnológica de react js para el portal y react-native para el móvil. Durante la revisión, se sugirió utilizar una sesión de usuario basada en ID de sesión en lugar de JWT Token.

También queremos utilizar el flujo OIDC para la autenticación y OAuth2.0 para la autorización de las API’s. Dado que hay sugerencias tanto para JWT como para ID de sesión, cada uno tiene sus ventajas y desventajas. El equipo de seguridad insiste en utilizar ID de sesión por las siguientes razones:

¿Cuál debería ser nuestra elección para la arquitectura de seguridad?

  • ¿Todavía necesitamos el ID de sesión para rastrear?
  • El token utilizado para OIDC no se puede enviar a la interfaz de usuario, ya que contiene información de privacidad y seguridad.
  • ¿Deberíamos utilizar JWE?
  • ¿Podemos tener un hash del token o un ID de correlación correspondiente a los tokens OIDC y buscar en cada llamada del cliente al backend, de modo que el navegador o la aplicación cliente no necesiten conocer los tokens OIDC?
  • ¿Realmente necesitamos un servicio de autenticación hecho a medida o es suficiente con un API Gw junto con cualquier OIDC para implementar seguridad de extremo a extremo sin necesidad de escribir un servicio de autenticación basado en Spring u otro?

HighLevel Flow

Flow

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basándose en las sugerencias y preocupaciones planteadas, es importante tomar una decisión informada con respecto a la elección de la arquitectura de seguridad para la aplicación del cliente. Tanto JWT como el ID de sesión tienen sus ventajas y desventajas, y el equipo de seguridad está abogando por el uso del ID de sesión debido a sus ventajas percibidas en cuanto a seguridad y capacidad de revocación.

    Sin embargo, también es importante considerar los requisitos de la aplicación y el conjunto de tecnologías utilizadas (react js y react-native). Se está utilizando el flujo OIDC para la autenticación y OAuth2.0 para la autorización de las API, lo que introduce sus propios requisitos y consideraciones.

    En cuanto a las preguntas específicas planteadas:

    • Puede ser necesario seguir utilizando los ID de sesión para rastrear las sesiones de los usuarios, dependiendo de los requisitos específicos de la aplicación y de la implementación de OIDC utilizada.
    • El Token utilizado para el flujo OIDC no debe enviarse a la interfaz de usuario, ya que contiene información confidencial. Se pueden utilizar otros métodos, como identificadores de correlación o tokens cifrados, para permitir la búsqueda en cada llamada del cliente al backend, de modo que el navegador o la aplicación cliente no necesiten conocer los tokens OIDC.
    • Se puede considerar el uso de JWE como forma de cifrar el token u otra información confidencial, pero es importante sopesar los beneficios en comparación con la complejidad añadida.
    • Es posible utilizar API Gateway junto con OIDC para implementar seguridad de extremo a extremo sin necesidad de un servicio de autenticación a medida, pero esto depende de los requisitos específicos y de la implementación técnica de la aplicación.

    En última instancia, la elección de la arquitectura de seguridad debe basarse en una evaluación integral de las ventajas y desventajas de cada opción, así como de los requisitos específicos de la aplicación y del conjunto de tecnologías utilizadas. Se debe considerar cuidadosamente el uso de OIDC y OAuth2.0 para la autenticación y autorización, así como cualquier requisito adicional para el seguimiento de sesiones y la revocación.

Comments are closed.