No puedo entender el razonamiento para hacer públicos los reclamos / carga útil de un JWT después de decodificarlo en base64.
¿Por qué?
Parece que sería mucho más útil cifrarlo con el secreto.
¿Alguien puede explicar por qué, o en qué situación, mantener esta información pública es útil?
security
json
authentication
jwt
necesito ayuda
fuente
fuente
Respuestas:
Eliges no encriptar la carga útil por las mismas razones por las que eliges no encriptar nada más: el costo (por pequeño que sea) excede el beneficio, y muchos datos simplemente no necesitan ser asegurados de esa manera.
Sobre todo contra lo que necesita protección es que las personas manipulen los datos para que se actualice el registro incorrecto o que la cuenta corriente de alguien obtenga dinero que no se supone que tenga. La firma de JSON Web Token logra eso, porque cambiar cualquier parte de la combinación de encabezado / carga / firma invalida el paquete.
Tenga en cuenta que aún puede proteger los paquetes en la capa de transporte utilizando SSL.
fuente
El uso del término firma en el RFC es análogo a una firma digital en criptografía asimétrica. En la criptografía asimétrica, si el remitente cifra un mensaje con su clave privada, cualquiera que tenga el mensaje puede descifrarlo con la clave pública del remitente. Entonces, el objetivo con el término firma no es mantener un mensaje en secreto, sino verificar la integridad / remitente del mensaje, eso no se ha modificado.
En el caso de los JWT, el sistema de envío es tanto el creador como el consumidor del mensaje (vea el diagrama a continuación), y el objetivo es asegurarse de que el token pasado al usuario no haya sido alterado (por ejemplo, con privilegios elevados).
Y como mencionó @Robert, los JWT pueden / deberían estar encriptados con TLS.
Aquí hay una buena explicación de JWT y firmas de las cuales se obtiene la imagen a continuación. 5 pasos sencillos para comprender los tokens web JSON (JWT)
fuente
Para agregar a la respuesta de Robert Harveys, hay una desventaja significativa en el cifrado de la carga útil: significa que el destinatario del servicio necesita compartir un secreto con el servidor de autenticación (la clave de cifrado) para comprender si el portador del token está autorizado o no. o no. Por el contrario, cualquiera puede validar un JWT utilizando solo la clave pública publicada por el servidor de autenticación.
Esta es una parte clave de la especificación Openid Connect, ya que permite que las aplicaciones del cliente validen los tokens de identidad emitidos por el servidor de autenticación, también facilita la implementación de servidores de recursos (ya que no es necesario implementarlos con acceso al cifrado secreto) clave) y también ayuda al intentar diagnosticar cualquier problema con un JWT emitido.
fuente