Considere el siguiente escenario: la aplicación web está usando dos sistemas separados (pueden compartir datos / estado a través de DB). El primero se usa para procesar material web estándar como solicitudes / respuestas HTTP, contenido HTML, formularios y todo lo relacionado. Second se usa para la comunicación en tiempo real, como el envío de mensajes y notificaciones (encuesta larga o servidor WebSocket).
El usuario puede autenticarse a través del primer sistema / plataforma y, si las credenciales son válidas, algunas páginas web se envían de vuelta al cliente. Una vez que esta página está cargada, el cliente debe conectarse con el segundo sistema / plataforma de forma transparente en segundo plano.
La pregunta es: ¿cómo autenticar al usuario en una página web / aplicación que consiste en múltiples sistemas / plataformas en el back-end?
Puedo imaginarlo de esta manera:
- Cuando el usuario se autentica a través del primer sistema / plataforma, el token GUID se genera y almacena en una base de datos vinculada a algún usuario. Este token y el ID de usuario también se envían en una respuesta al cliente y, por ejemplo, se representan en la página en campos ocultos.
- Cuando se carga la página y se realiza la conexión con el segundo sistema / plataforma, se recuperan el token y el ID de usuario de los campos ocultos y se envían como parámetros con la solicitud de conexión. El usuario de back-end encuentra, compara su token en la base de datos y si coinciden, se podría iniciar la conexión en tiempo real.
Entiendo que este enfoque es vulnerable a la inhalación, por ejemplo, pero me interesa el procedimiento de autenticación entre dos sistemas / plataformas separados.