Puedo cerrar sesión e iniciar sesión, pero hay 1 escenario particular que no puedo lograr.
Guión:-
https://xxxxxxx.auth.us-east-2.amazoncognito.com/logout? response_type=token&client_id=xxxxxxxxx&logout_uri=https://abc/logout.htmlcierra la sesión del usuario con éxito y redirige con éxito al usuario a la página de cierre de sesión como se menciona en la URL.
Quiero tener tal funcionalidad que el usuario pueda cerrar sesión y volver a iniciar sesión si lo desea, luego puede iniciar sesión con la misma cuenta o con una diferente dependiendo de la elección.
El punto importante a tener en cuenta es que no puedo usar AWS-Amplify ni ningún marco de javascript, solo javascript simple.
La razón por la que siempre se ve obligado a iniciar sesión con el mismo usuario parece ser que /logout? endpoint solo cierra la sesión del usuario en Cognito, pero Cognito no comunica a Google que debe cerrar la sesión de su dispositivo. Por lo tanto, cada vez que vuelve a iniciar sesión y se inicia la pantalla de autenticación de Google, Google aún recuerda el dispositivo y ve que todavía está conectado. Como resultado, el URI de redirección se activa sin que se le solicite que elija una nueva cuenta.
Me encuentro con los mismos problemas en un proyecto de React Native, pero aún no he encontrado ninguna evidencia de que Cognito ofrezca un punto final para forzarlo a cerrar la sesión del proveedor de identidad (es decir, Google).
PD: aquí hay otra discusión de stackoverflow con más información: AWS Cognito: cómo forzar una cuenta seleccionada al iniciar sesión con Google
Una de las respuestas en ese hilo menciona llamar al punto final de cierre de sesión de Google directamente como parte del flujo de cierre de sesión. Definitivamente no es bonito, pero dado que está usando Javascript simple, podría ser una solución suficiente.
Si encuentra una solución más limpia, asegúrese de compartirla, ya que me interesaría saber qué encuentra :)
Bueno, lo hice funcionar, pero no creo que sea un problema, sino un tipo de comportamiento que todo desarrollador debería saber que está tratando de integrar el inicio de sesión de Google en la aplicación allí. Aquí están los pocos escenarios que he comprobado y su comportamiento respectivo.
Mi URL de inicio de sesión de AWS Cognito
https://xxxxxxx.auth.us-east-2.amazoncognito.com/oauth2/authorize? identity_provider=Google&redirect_uri=https://xxxxxx/login.html&response_type=TOKEN &client_id=xxxxxxxxxxxxxxxxx&scope=phone%20email%20openid%20profileMi URL de cierre de sesión de AWS Cognito
https://xxxxxxxxx.auth.us-east-2.amazoncognito.com/logout? client_id=xxxxxxxxxxxxxxxxxxxx &logout_uri=https://xxxxxxxxxxxxx/logout.htmlAl usar la URL anterior cuando cierro la sesión, no me desconecto del navegador Chrome.
Este comportamiento es un problema para muchas personas.
Entonces, cuando su navegador Chrome tiene solo 1 cuenta iniciada, en ese momento el inicio de sesión de AWS Cognito Google no redirigirá a una página donde puede seleccionar el usuario diferente, porque solo tiene un usuario a través del cual se registra indirectamente.
Descubrí cómo podemos mostrar múltiples inicios de sesión: - Entonces, si desea que otro usuario inicie sesión, primero debe iniciar sesión en el navegador Chrome, y cuando haga clic en el inicio de sesión de Google desde el sitio web en ese momento, podrá seleccionar el usuario, como en Chrome, ahora tenemos 2 usuarios registrados en Google, desde donde puede seleccionar qué usuario desea usar para acceder.
No aceptaré esto como una respuesta porque no es la forma en que todos quieren este comportamiento, esperaré unos días si alguien puede sugerir una mejor manera . Creo que sí, por ahora, tenemos que ir con esto.