Problem
오래전에 개발된 코드 중에 zendesk
1와 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
으로referrer
policy
로 설정되있으므로 같은 도메인이고,TLS
환경인 경우만referrer
를 전송하게 된다. - 그러므로
2-1
,2-2
에서 확인하는referrer
는 현재 사이트의origin
만 확인 가능하므로 정상 동작하지 않음, 하지만 한번 이상 로그인 을 시도하는 경우는2-1
에서 로그인이 이미 된것으로 탐지되므로 동작하는 것처럼 보이기도함
Solution
- 해결방법
zendesk
에서strict-origin-when-cross-origin
수정요청: 불가referrer
에 의존하지 않도록 서비스 코드를 수정하여 해결