Foros del Web » Programando para Internet » PHP »

Dudas Json Web Token y Seguridad

Estas en el tema de Dudas Json Web Token y Seguridad en el foro de PHP en Foros del Web. Buen día foreros, pues ando por aquí con varias dudas sobre este sistema de autenticacion, tratare de ser lo mas claro posible. Lo que entiendo ...
  #1 (permalink)  
Antiguo 07/08/2015, 18:34
Avatar de jvier  
Fecha de Ingreso: septiembre-2014
Mensajes: 106
Antigüedad: 5 años, 4 meses
Puntos: 6
Pregunta Dudas Json Web Token y Seguridad

Buen día foreros, pues ando por aquí con varias dudas sobre este sistema de autenticacion, tratare de ser lo mas claro posible.

Lo que entiendo es:
1.- para obtener un JWT es necesario hacer un login normal.
Una vez autenticado se genera el JWT con todas sus características que ustedes ya conocen. (encabezado, contenido y firma generada con su clave secreta) y se envía al cliente.

2.- el cliente recibe el token lo almacena de manera local y lo utilizara para todas las peticiones que le hará a la API donde requiera autenticacion.

3.- el servidor donde esta la API recibe la petición junto con el token y con su clave secreta descifra el token verificando así su integridad y sabiendo así a quien pertenece el token y permite la petición..

Bueno... se que en cierta parte es seguro porque se envía al cliente un token que es indescifrable si no tienes la clave secreta, si se cambian los datos del token al regresarlos a la API no harán efecto porque la firma no coincidirá y sera rechazada la petición, y pues en teoria si tienes un token valido es porque lo obtuviste haciendo login y el servidor te lo entrego, y si el servidor lo puede verificar es porque fue generado por el mismo con su clave secreta, y se supone que mientras la clave siga siendo secreta se puede confiar en el token... hasta ahí todo bien... pero!

1.- y si el token es obtenido por otra persona? es como si obtuvieran su contraseña! dirán algunos que el token expira.. si, pero mientras sea valido? se puede cambiar el password del usuario. (si añado la ip al token no estoy seguro si puedo solucionar esto)

2.- el token tiene fecha de expiracion, si estoy trabajando y a la mitad de mi trabajo expira mi token, al yo querer guardar mi trabajo no podre y perderé mi trabajo!
(posiblemente esto se solucione refrescando el token con cada petición reiniciando el tiempo de expiracion y usando tiempos de expiracion cortos, se tendría que estar enviando al cliente un nuevo token con cada peticion)

3.- como se cierra sesión? como no hay un estado, y el token solo es verificado al vuelo sin revisar en bases de datos, aunque el token se elimine del almacenamiento local, si alguien lo tiene podrá usarlo mientras no expire!

4.- y si el cliente cambia contraseña? como inhabilito el token actual si no hay estado? dirán que almacene los tokens en una base de datos para verificar los token inválidos, pero hay se perdería la escencia de este sistema que es el stateless, porque tendría que checar en base de datos en cada petición que hagan a la API que el token sea uno valido y no este en la lista negra, esta la opción de tiempos de expiracion cortos, pero entonces que no es mejor generar un nuevo token para el usuario con cada petición que haga a la API? y de todos modos al lograr obtener una copia del token antes de que expire se podría usar y al usarlo se refrescaría el token y seguiría siendo valido

Pues esas son mis dudas...
__________________
Me gusta desarrollar aplicaciones para Android, y me considero bueno para el PHP, Javascript y el AS3.

AH! y agradezco puntitos jeje (si mis respuestas te ayudan).
  #2 (permalink)  
Antiguo 08/08/2015, 01:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 9 meses
Puntos: 2534
Respuesta: Dudas Json Web Token y Seguridad



¿Qué tiene que ver JWT exactamente con PHP?

Es decir, la especificación de JWT debería explicar todo eso ¿o no?

Es como si de pronto abres un tema en el foro de CSS ¿preguntando de RSS?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/08/2015, 09:46
Avatar de jvier  
Fecha de Ingreso: septiembre-2014
Mensajes: 106
Antigüedad: 5 años, 4 meses
Puntos: 6
Respuesta: Dudas Json Web Token y Seguridad

pateketrueke gracias por tu respuesta.
Aclarare tus dudas

Cita:
¿Qué tiene que ver JWT exactamente con PHP?
1.- JWT según tengo entendido es solo una técnica para autenticacion en sistemas y no es propio de algún lenguaje en especifico, asi que como yo lo aplico en PHP pues para mi si tiene que ver con PHP y lo pongo en el foro de PHP porque posiblemente haya "algo" en este lenguaje que me ayude, ya sea una implementacion o una alternativa a este objetivo que tengo que es la autenticacion con tokens.

Cita:
Es decir, la especificación de JWT debería explicar todo eso ¿o no?
2.- en la especificación de JWT no encontré respuesta a mis dudas.

Cita:
Es como si de pronto abres un tema en el foro de CSS ¿preguntando de RSS?
3.- lo del foro de CSS preguntando sobre RSS... pues con tu ejemplo siento que quieres decir que una cosa no tiene nada que ver con la otra.. bueno.. RSS es un formato para compartir contenido en XML, y CSS es para dar estilos, al principio y sin ir mas a fondo tienes razón, pero tu ejemplo no aplica a mi pregunta porque como ya dije en el punto 1 como JWT no es un lenguaje (Es una técnica que usa JSON como medio para transportar por HTTP información codificada con base64 y firmada con sha256 o algún otro mas una clave secreta para verificar su integridad y evitar su modificación) es una técnica que usa algunas funciones nativas (o con extensiones) de algunos lenguajes como por ejemplo PHP.

... pero si alguien entra a un foro de CSS preguntando como dar estilo a su feed RSS le dirás que no tiene nada que ver CSS con RSS?

bueno.. pues todo esto es sin intención de molestar, solo quise aclarar mi punto, si tu pateketrueke tienes experiencia con esto de los tokens de autorización en APIS Stateless te agradecería me contaras tu experiencia si has tenido estos mismos cuestionamientos y los has solucionado.
__________________
Me gusta desarrollar aplicaciones para Android, y me considero bueno para el PHP, Javascript y el AS3.

AH! y agradezco puntitos jeje (si mis respuestas te ayudan).
  #4 (permalink)  
Antiguo 08/08/2015, 10:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 9 meses
Puntos: 2534
Respuesta: Dudas Json Web Token y Seguridad

Bueno, el último punto era algo de sarcasmo, pues sigo pensando que no hace falta más que investigar el tema.

Buscando en pocos minutos encontré que sí existen implementaciones para PHP como era de esperar: https://packagist.org/search/?q=jwt

Seguro tendrán documentación de uso, ejemplos, etc. y alguno seguro servirá para despejar tus dudas.

El que me pareció más actualizado es php-jwt, que inclusive te da un enlace al spec oficial de JWT: http://tools.ietf.org/html/draft-iet...n-web-token-06

Y pues ahí tienes, la especificación completa debería darte algo de luz.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: api, login, seguridad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:08.