Redirección posterior al cierre de sesión en OpenID Connect

Aug 20 2020

Cuando inicio sesión en mi aplicación con Salesforce como OpenID Connect Provider (OP), puedo hacerlo. Pero, cuando trato de cerrar sesión en mi aplicación, se cierra la sesión de Salesforce y luego se me redirige a mi página de inicio de sesión de Salesforce https://{MY_DOMAIN}.my.salesforce.com/.

Comportamiento esperado:

Cuando se envía una solicitud de cierre de sesión post_logout_redirect_urial OP, el OP debe redirigir a esta URL después de su propia secuencia de cierre de sesión.

Comportamiento real:

Cuando intento cerrar sesión en la aplicación, se me redirige a mi dominio de Salesforce y se me pide que vuelva a iniciar sesión en Salesforce.

Lo que he probado:

Según la documentación , habilité el cierre de sesión único en la aplicación conectada probando ambos https://{MY_KEYCLOAK_DOMAIN}/auth/realms/{REALM}/broker/{IDP}/endpoint/logout_responsey https://{MY_KEYCLOAK_DOMAIN}/auth/realms/{REALM}/protocol/openid-connect/logoutcomo el Single Logout URLvalor en la configuración de la aplicación conectada.

Intenté usar el método de cierre de sesión del canal secundario, pero no parece cerrar sesión en Salesforce con eso.

Respuestas

identigral Aug 20 2020 at 01:22

Como ha descubierto, solo el cierre de sesión único (SLO) de OIDC de canal frontal es compatible con SF que actúa como proveedor de OpenID Connect (OP). Esto se puede confirmar a través de los metadatos de OIDC en /.well-known/openid-configuration.

¿Cómo funciona el SLO de canal frontal en OIDC? De la especificación :

Los OP que admiten el cierre de sesión basado en HTTP deben realizar un seguimiento del conjunto de RP conectados para que sepan a qué RP contactar en sus URI de cierre de sesión para que cierren la sesión. Algunos OP rastrean este estado usando una cookie de "sitios visitados". Los OP se ponen en contacto con ellos en paralelo utilizando una página construida dinámicamente con <iframe src="frontchannel_logout_uri">etiquetas HTML que representan el URI de cierre de sesión de cada RP conectado

Sin mención de post_logout_redirect_uri. (Se solía hablar de la especificación de administración de sesiones OIDC, post_logout_redirect_uripero se eliminó en el último borrador).

Como indica el documento de ayuda al que hace referencia, Salesforce recupera el URI de cierre de sesión del canal frontal del que habla la especificación desde el campo Cierre de sesión único de la aplicación conectada.

Para el redireccionamiento posterior al cierre de sesión desde Salesforce, puede configurar una URL de cierre de sesión en el nivel de la organización a través de Setup => Session Settings => Logout Page Settings => Logout URL. Esto se aplicará a todas las aplicaciones conectadas. El valor de esta configuración podría apuntar a un servicio basado en su propio código personalizado que se ejecuta en cualquier lugar que pueda examinar más a fondo la solicitud y realizar los pasos de posprocesamiento apropiados.

NB: Las especificaciones de administración de sesión de OIDC + SLO (tanto el canal frontal como el posterior) aún son borradores y no son definitivas.