Estoy usando JWT para manejar un esquema de SSO donde dos sistemas (llamémoslos A y B) requieren autenticación, pero el almacén de datos del usuario está en un solo sistema (digamos A). Todo lo que he visto sobre JWT involucra al usuario que publica el nombre de usuario / contraseña para recibir el JWT, pero me pregunto si es seguro devolver un JWT a un usuario que ya haya iniciado sesión.
Para hacerlo un poco más concreto, el sistema de autenticación A (example.com) utiliza autenticación basada en cookies / sesión, pero el segundo sistema B (subdominio.ejemplo.com) necesita la JWT para autenticarse. No queremos forzar a los usuarios que ya han iniciado sesión y que tienen una cookie de sesión a ingresar nuevamente el nombre de usuario / contraseña para obtener un JWT, por lo que pensamos que implementaremos un punto final de API que devuelva un JWT a un usuario quién ya inició sesión (a través de la sesión de autenticación), que el usuario puede luego autenticar con el sistema B. En particular, estamos usando Django REST Framework JWT, que brinda la opción de crear manualmente el JWT: enlace
Por ejemplo, tendríamos un punto final de API donde puedes GET https://systemA.com/api/gimme-jwt/
if user is already authed:
return JWT
else:
return 401
Una vez más, la diferencia clave entre esto y todo lo que he visto es que estamos devolviendo un JWT a un usuario que ya ha iniciado sesión.