Reindirizzamento post-disconnessione in OpenID Connect

Aug 20 2020

Quando accedo alla mia applicazione con Salesforce come OpenID Connect Provider (OP), sono in grado di farlo. Tuttavia, quando provo a disconnettermi dalla mia applicazione, vengo disconnesso da Salesforce e quindi reindirizzato alla mia pagina di accesso a Salesforce https://{MY_DOMAIN}.my.salesforce.com/.

Comportamento atteso:

Quando una richiesta di logout con post_logout_redirect_uriviene inviata all'OP, l'OP dovrebbe reindirizzare a questo URL dopo la propria sequenza di logout.

Comportamento effettivo:

Quando tento di disconnettermi dall'applicazione, vengo reindirizzato al mio dominio Salesforce e mi viene chiesto di accedere nuovamente a Salesforce.

Cosa ho provato:

Come da Documentation , ho abilitato Single Logout sull'app connessa provando entrambi https://{MY_KEYCLOAK_DOMAIN}/auth/realms/{REALM}/broker/{IDP}/endpoint/logout_responsee https://{MY_KEYCLOAK_DOMAIN}/auth/realms/{REALM}/protocol/openid-connect/logoutcome Single Logout URLvalore nella configurazione dell'app connessa.

Ho tentato di utilizzare il metodo di disconnessione del canale di ritorno, ma non sembra disconnettersi da Salesforce utilizzando quello.

Risposte

identigral Aug 20 2020 at 01:22

Come hai scoperto, solo il single logout (SLO) OIDC front-channel è supportato da SF che funge da OpenID Connect Provider (OP). Ciò è/può essere confermato tramite i metadati OIDC in /.well-known/openid-configuration.

Come funziona lo SLO front-channel in OIDC? Dalle specifiche :

Gli OP che supportano il logout basato su HTTP devono tenere traccia del set di RP connessi in modo che sappiano quali RP contattare ai loro URI di logout per indurli a disconnettersi. Alcuni OP tengono traccia di questo stato utilizzando un cookie "siti visitati". Gli OP li contattano in parallelo utilizzando una pagina costruita dinamicamente con <iframe src="frontchannel_logout_uri">tag HTML che visualizzano l'URI di logout di ogni RP connesso

Nessuna menzione di post_logout_redirect_uri. (Si parlava delle specifiche di gestione delle sessioni OIDC post_logout_redirect_urima sono state rimosse nell'ultima bozza).

Come afferma il documento della guida a cui fai riferimento, l'URI di logout del canale frontale di cui parla la specifica viene recuperato da Salesforce dal campo Single Logout dell'app connessa.

Per il reindirizzamento post-disconnessione da Salesforce, puoi configurare un URL di disconnessione a livello di organizzazione tramite Setup => Session Settings => Logout Page Settings => Logout URL. Questo si applicherà a tutte le app connesse. Il valore di questa impostazione di configurazione potrebbe puntare a un servizio basato sul tuo codice personalizzato in esecuzione ovunque che possa esaminare ulteriormente la richiesta ed eseguire passaggi di post-elaborazione appropriati.

NB: le specifiche OIDC session mgmt + SLO (sia canale anteriore che posteriore) sono ancora bozze e non definitive.