Tengo un grupo de usuarios de Cognito configurado con un proveedor de identidad SAML (ADFS) y puedo iniciar sesión como usuario federado (AD), pero cerrar sesión no funciona.
Siguiendo la documentación , hago una solicitud GET a https://my-domain.auth.us-west-2.amazoncognito.com/logout?client_id=63...ng&logout_uri=http:%2F%2Fyahoo.com (usando algún uri de cierre de sesión público), de mi cliente (una aplicación AngularJS 1.x), y obtengo un 302 con un encabezado de ubicación como
https://my-domain.auth.us-west-2.amazoncognito.com/login?client_id=63...ng&logout_uri=http:%2F%2Fyahoo.com(De hecho allí veo 2 solicitudes como la anterior).
Cuando vuelvo a iniciar sesión (a través de ADFS), no me solicita mis credenciales de AD, es decir, parece que no estoy desconectado.
Mi grupo de usuarios está configurado como se describe aquí (consulte el paso 7), donde se marca el flujo de cierre de sesión Habilitar IdP , que se supone que también cierra la sesión del usuario en ADFS.
¿Alguna sugerencia? Gracias.
General ------- Request URL: https://my-domain.auth.us-west-2.amazoncognito.com/logout?client_id=63...ng&logout_uri=http:%2F%2Fyahoo.com Request Method: GET Status Code: 302 Remote Address: 54.69.30.36:443 Referrer Policy: no-referrer-when-downgrade Response Headers ---------------- cache-control: private content-length: 0 date: Fri, 20 Apr 2018 21:31:12 GMT expires: Thu, 01 Jan 1970 00:00:00 UTC location: https://my-domain.auth.us-west-2.amazoncognito.com/login?client_id=63...ng&logout_uri=http:%2F%2Fyahoo.com server: Server set-cookie: XSRF-TOKEN=...; Path=/; Secure; HttpOnly set-cookie: XSRF-TOKEN=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; Secure; HttpOnly status: 302 strict-transport-security: max-age=31536000 ; includeSubDomains x-content-type-options: nosniff x-frame-options: DENY x-xss-protection: 1; mode=block Request Headers --------------- :authority: my-domain.auth.us-west-2.amazoncognito.com :method: GET :path: /logout?client_id=63...ng&logout_uri=http:%2F%2Fyahoo.com :scheme: https accept: application/json, text/plain, */* accept-encoding: gzip, deflate, br accept-language: en-US,en;q=0.9 authorization: Bearer eyJra... cache-control: no-cache origin: https://localhost:8443 pragma: no-cache referer: https://localhost:8443/logout user-agent: Mozilla/5.0...Esta redirección se produce siempre que el parámetro logout_uri no coincide exactamente con lo que aparece en la(s) URL(s) de cierre de sesión en la configuración del cliente de la aplicación de grupos de usuarios de AWS Cognito.
Cognito permite el cierre de sesión con logout_uri o con los mismos argumentos que el inicio de sesión (es decir, redirect_uri y response_type ) para cerrar sesión y llevar al usuario de vuelta a la pantalla de inicio de sesión. Parece que cada vez que logout_uri no es válido, asume el flujo de reinicio de sesión, lo redirige y luego informa un error sobre la falta de argumentos de inicio de sesión.
En cuanto a SAML, no lo sé, pero supongo que no funciona porque en realidad hubo un error, simplemente no se informó correctamente.
El /logout endpoint la sesión del usuario. Solo admite HTTPS GET . Está funcionando
Solicitudes de muestra: cierre de sesión y redirección al cliente
Borra la sesión existente y redirige de nuevo al cliente. Ambos parámetros son obligatorios.
GET https://<YOUR DOMAIN NAME>/logout? client_id=xxxxxxxxxxxx& logout_uri=com.myclientapp://myclient/logoutTambién asegúrese de que la URL de cierre de sesión sea la misma que la URL de CERRAR SESIÓN en la aplicación AWS Cognito .
para obtener más información, consulte Punto final de cierre de sesión de AWS
De la documentación aquí
https://docs.aws.amazon.com/cognito/latest/developerguide/logout-endpoint.html
Si quieres
Y su URL de inicio de sesión es como
"https://xxxx.auth.eu-west-1.amazoncognito.com/login?client_id=1234&response_type=token&scope=aws.cognito.signin.user.admin+email+openid+phone+profile&redirect_uri=http://localhost:3000/"Entonces su URL de cierre de sesión es como
"https://xxxx.auth.eu-west-1.amazoncognito.com/logout?client_id=1234&logout_uri=http://localhost:3000/";Tenga en cuenta la diferencia
Esos uri de redireccionamiento/cierre de sesión deben coincidir con lo que ha configurado dentro de Cognito.
Si no lo haces bien, puedes obtener errores extraños como
error=unauthorized_cliento
Required String parameter 'response_type' is not presentY quién sabe qué más. :u)