라떼군 이야기
zendesk SSO 로그인 리퍼러 관련 문제해결
Problem
오래전에 개발된 코드 중에 zendesk1와 SSO 연동을 하고 있는 서비스가 있었다.
TLS와 referrer 관련 문제로 SSO 연동이 제대로 되지 않음을 발결했고, 확인하고 해결했던 과정을 간단히 정리한다.
-
zendesk: 사이트에서 로그인 버튼 클릭 시 아래 과정을 거침- https://{YOUR_DOMAIN}.zendesk.com/auth/v2/login/signin?return_to={RETURN_URL}&theme=hc&locale=ja&brand_id={BRAND_ID}&auth_origin={BRAND_ID},true,true&browser=chrome
- https://{YOUR_DOMAIN}.zendesk.com/auth/v2/login/sso?auth_origin={BRAND_ID},true,true&brand_id={BRAND_ID}&browser=chrome&locale=ja&return_to={RETURN_URL}&theme=hc
-
서비스: 위
URL을 거쳐 젠데스트 용 로그인 페이지로 이동- https://{YOUR_RETURN_DOMAIN}/module/zendesk/login?brand_id={BRAND_ID}&locale_id=67&return_to={RETURN_URL}&target=zendesk×tamp=1655939323
- 위 로그인 페이지는 인증여부를 확인하고 로그인 되있지 않으면 아래 주소로 이동
- https://{YOUR_RETURN_DOMAIN}/login
- 만약 인증이 되있으면
JWT인증 토큰 방급 등으로zendesk인증을 진행
-
기존
2-2에서 로그인 한 후 방문했던 이전 페이지로 이동하는 과정을header의referrer를 이용하고 있었음. 하지만chrome 85이상부터 에서https환경에서referrer를 확인할 수 없게 변경되었으므로 정상 동작이 불가함chrome 85부터 사용할 수 없음4referrer관련
-
zendesk는strict-origin-when-cross-origin으로referrerpolicy로 설정되있으므로 같은 도메인이고,TLS환경인 경우만referrer를 전송하게 된다. -
그러므로
2-1,2-2에서 확인하는referrer는 현재 사이트의origin만 확인 가능하므로 정상 동작하지 않음, 하지만 한번 이상 로그인 을 시도하는 경우는2-1에서 로그인이 이미 된것으로 탐지되므로 동작하는 것처럼 보이기도함
Solution
- 해결방법
zendesk에서strict-origin-when-cross-origin수정요청: 불가referrer에 의존하지 않도록 서비스 코드를 수정하여 해결