OpenID Connect에서 로그 아웃 후 리디렉션
Salesforce를 사용하여 OpenID Connect 공급자 (OP)로 내 응용 프로그램에 로그인하면 그렇게 할 수 있습니다. 하지만 내 응용 프로그램에서 로그 아웃을 시도하고 로그 아웃하면 Salesforce에서 로그 아웃 된 다음 내 Salesforce 로그인 페이지로 리디렉션됩니다 https://{MY_DOMAIN}.my.salesforce.com/
.
예상되는 동작 :
로 로그 아웃 요청 post_logout_redirect_uri
이 OP로 전송되면 OP는 자체 로그 아웃 시퀀스 후에이 URL로 리디렉션되어야합니다.
실제 행동 :
응용 프로그램에서 로그 아웃하려고하면 Salesforce 도메인으로 리디렉션되고 Salesforce에 다시 로그인하라는 메시지가 표시됩니다.
내가 시도한 것 :
따라 서 , 나는 모두를 시도 연결된 응용 프로그램에 단일 로그 아웃을 사용하도록 설정 https://{MY_KEYCLOAK_DOMAIN}/auth/realms/{REALM}/broker/{IDP}/endpoint/logout_response
하고 https://{MY_KEYCLOAK_DOMAIN}/auth/realms/{REALM}/protocol/openid-connect/logout
는 AS Single Logout URL
연결된 응용 프로그램 구성 값.
백 채널 로그 아웃 방법을 사용해 보았지만이를 사용하여 Salesforce에서 로그 아웃하지 않는 것 같습니다.
답변
아시다시피, OpenID Connect Provider (OP) 역할을하는 SF는 프런트 채널 OIDC 싱글 로그 아웃 (SLO) 만 지원합니다. 이는에서 OIDC 메타 데이터를 통해 확인할 수 있습니다 /.well-known/openid-configuration
.
OIDC에서 프론트 채널 SLO는 어떻게 작동합니까? 로부터 사양 :
HTTP 기반 로그 아웃을 지원하는 OP는 로그인 한 RP 세트를 추적하여 로그 아웃을 유발하기 위해 로그 아웃 URI에서 어떤 RP에 접속해야하는지 파악해야합니다. 일부 OP는 "방문한 사이트"쿠키를 사용하여이 상태를 추적합니다. OP는
<iframe src="frontchannel_logout_uri">
로그인 한 각 RP의 로그 아웃 URI를 렌더링 하는 HTML 태그가 있는 동적으로 구성된 페이지를 사용하여 병렬로 연락합니다.
에 대한 언급이 없습니다 post_logout_redirect_uri
. (OIDC 세션 관리 사양에 대해 언급 post_logout_redirect_uri
했지만 최신 초안에서 제거되었습니다).
참조하는 도움말 문서에 나와 있듯이 사양이 말하는 프런트 채널 로그 아웃 URI는 연결된 앱의 싱글 로그 아웃 필드에서 Salesforce에 의해 검색됩니다.
Salesforce에서 로그 아웃 후 리디렉션의 경우를 통해 조직 수준에서 로그 아웃 URL을 구성 할 수 있습니다 Setup => Session Settings => Logout Page Settings => Logout URL
. 이는 연결된 모든 앱에 적용됩니다. 이 구성 설정의 값은 요청을 추가로 검사하고 적절한 사후 처리 단계를 수행 할 수있는 모든 위치에서 실행중인 사용자 지정 코드를 기반으로하는 서비스를 가리킬 수 있습니다.
주의 : OIDC 세션 관리 + SLO (전면 및 후면 채널 모두) 사양은 아직 초안이며 최종 사양이 아닙니다.