Estoy creando un servidor de API (una puerta de enlace) con dos restricciones en mente:
- Tiene que estar sin sesión (no hay ID de sesión en una cookie ni en ningún sitio, ni Redis ni nada por el estilo)
- Tengo que usar una concesión implícita proporcionada por un proveedor de identidad de terceros con un protocolo similar a OAuth 2.
Normalmente, las personas están generando un nonce para evitar un ataque de repetición. Nonce se almacena en una sesión y se envía al proveedor de identidad. El proveedor de identidad, finalmente, lo devuelve al servidor API a través de una devolución de llamada. El servidor debe recuperar el nonce de la sesión actual y compararlo con el recibido a través de la devolución de llamada. Todo agradable y dulce si tienes una sesión. Yo no.
¿Qué es una solución ampliamente aceptada para esto?
¿Sería bueno si yo, en mi lado (servidor API), genero un nonce, creo un JWT con este nonce, pongo un breve vencimiento (por ejemplo, 5-10 minutos), lo firmo con mi secreto y lo envío como ¿Un nonce para el proveedor de identidad? Luego, en la función de devolución de llamada, recuperaré el nonce (JWT) y validaré su caducidad, firma y otros parámetros. Y luego, si todo está bien, acepte el resto de la carga útil de devolución de llamada.