네이티브 앱은 한 번만 로그인하라고 요청한 후 로그아웃하겠다고 말할 때까지 사용자를 기억해 주므로 모두가 좋아합니다. 안타깝게도 웹은 항상 그렇게 작동하지는 않습니다.
이제 기기, 특히 휴대기기가 더 개인화되고 HTTPS를 통해 모든 트래픽을 전송하는 사이트가 늘어나면서 토큰 도난의 위험이 줄어들었습니다. 따라서 웹사이트는 단기 쿠키 정책을 재고하고 더 사용자 친화적이고 오래 지속되는 세션을 채택해야 합니다.
하지만 세션을 더 오래 유지하고 싶어도 일부 웹사이트는 각 요청에서 사용자의 인증을 확인하지 않습니다. 즉, 일단 발급된 세션 쿠키를 취소할 방법이 없습니다. 이렇게 하면 일반적으로 세션이 짧아지며, 인증을 다시 확인할 수 있도록 사용자가 자주 로그인해야 하므로 비밀번호 변경과 같은 작업으로 인해 일정 시간 내에 기존 세션이 무효화될 수 있습니다.
이 접근 방식을 사용하는 경우 스테이트리스 인증 쿠키를 자동으로 재검증하는 데 도움이 되는 기술적 솔루션이 있습니다. 기존의 짧은 기간 인증 쿠키를 새로고침하는 데 사용할 수 있는 보조 장기 토큰을 보유함으로써 작동합니다. 새 서비스 워커 패턴을 활용하면 장기 토큰으로 정기적으로 '체크인'하고 사용자 인증을 확인 (예: 최근에 비밀번호를 변경하지 않았는지 또는 세션을 취소하지 않았는지 확인)하고 새 단기 인증 쿠키를 다시 발급할 수 있습니다.
웹에서 안전한 장시간 세션으로 이전하기 위한 실용적인 제안
이 게시물에서는 2-Cookie-Handoff (2CH)라고 하는 Google에서 제안하는 새로운 기법을 설명합니다. 이 도움말을 통해 이 접근 방식이 긍정적인 것인지에 관한 커뮤니티 의견을 듣고, 긍정적인 경우 업계와 협력하여 2CH 사용 권장사항을 문서화하고자 합니다.
서비스 워커는 Chrome, Firefox, Opera와 같은 여러 브라우저에서 지원되는 새로운 기술로, Edge에서도 곧 지원될 예정입니다. 이를 통해 기존 페이지를 수정하지 않고도 클라이언트의 공통 코드 포인트를 통해 사이트의 모든 네트워크 요청을 가로챌 수 있습니다. 이렇게 하면 로그인한 사용자를 위해 '2CH 작업자'를 설정하여 페이지에서 실행하는 모든 네트워크 요청을 가로채고 모바일 앱과 마찬가지로 토큰 교환을 실행할 수 있습니다.
대부분의 경우 서버에는 모바일 앱에서 일반적으로 OAuth 프로토콜을 사용하여 새 단기 토큰을 가져오는 데 사용하는 엔드포인트가 이미 있습니다. 웹에서 위의 패턴을 사용 설정하려면 이 엔드포인트가 서비스 워커에 의해 호출되는 시점을 파악하도록 업데이트한 다음 사이트의 다른 페이지에서 이미 예상하는 형식으로 새로운 짧은 세션 쿠키를 반환하기만 하면 됩니다.
서버에 아직 이러한 엔드포인트가 없는 경우 브라우저 세션 관리 전용으로 엔드포인트를 만들 수 있습니다.
서비스 워커를 사용한 두 토큰 패턴은 OAuth 2.0 패턴을 매우 밀접하게 따릅니다. 이미 OAuth 토큰 엔드포인트를 실행하고 있다면 웹 인증을 위해 서비스 워커와 함께 재사용할 수 있습니다.
사용자가 서비스 워커를 지원하지 않는 브라우저를 방문하면 어떻게 되는지 궁금할 수도 있습니다. 위의 접근 방식을 구현하면 사용자에게 아무런 차이가 느껴지지 않으며 계속해서 짧은 세션이 표시됩니다.
샘플 클라이언트 및 백엔드를 게시했습니다. 직접 사용해 보고 세션 관리에 관한 설문조사에 응답해 주시기 바랍니다.