Estoy intentando validar un token JWT recibido de Windows Azure. Estoy siguiendo la documentación aquí: enlace
Cuando solicita un token, Azure le hace suministrar un nonce, y el token JWT devuelto contiene el nonce que envió, y se supone que debe asegurarse de que coincidan. Un problema común en esta situación es que el servidor no tiene estado y puede haber varios servidores, por lo que no es fácil almacenar el nonce para comparar el valor en el token cuando se recibe el token.
Esto es lo que planeo hacer: cuando redireccione el navegador a enlace almacenaré el nonce en una cookie. Cuando se reciba el token de Azure, y el navegador lo envíe a mi servidor, también recibiré el nonce en la cookie y puedo compararlos para asegurarme de que coincidan.
Esta es una solución fácil para el problema de dónde almacenar el nonce. Pero la pregunta es, ¿es esta estrategia consistente con la forma en que se supone que se debe usar el nonce? Dado que el nonce se transfiere al / del cliente, ¿eso rompe la protección ofrecida por nonce? ¿Habilitará esto los ataques de repetición y dejará el nonce sin valor? Para responder a estas preguntas, necesito saber qué tipo de ataques estoy tratando de prevenir.
Entonces, la pregunta es, ¿cuáles son algunos ejemplos de escenarios de ataques de repetición que el nonce está diseñado para prevenir? ¿Está el atacante en algún lugar de Internet, en cuyo caso se puede usar SSL para evitar que vea alguna comunicación? ¿O está el atacante en la misma computadora que el usuario, es decir, después de que el usuario deja la computadora, el atacante usa la computadora y el navegador que el usuario no pudo cerrar?
¿Cómo funciona exactamente un ataque de reproducción?