파티션을 나누지 않은 쿠키에서 파티션을 나눈 쿠키로 전환

사이트를 파티션을 나눈 쿠키로 전환할 때 특정 클라이언트에 동일한 이름의 파티션을 나눈 쿠키와 파티션을 나누지 않은 쿠키가 모두 존재하면 예기치 않은 동작이 발생할 수 있습니다.

파티션을 나눈 쿠키를 설정해도 파티션을 나누지 않은 기존 쿠키가 동일한 이름으로 재정의되거나 대체되지 않습니다. 서드 파티 쿠키가 사용 설정되어 있으면 둘 다 존재하지만 별도의 쿠키 단지에 저장됩니다. 서드 파티 쿠키가 사용 중지되면 파티션을 나눈 쿠키만 허용됩니다. 두 쿠키가 모두 존재하면 어떤 쿠키가 파티션이 나뉘어 있는지 프로그래매틱 방식으로 구분할 수 없으며 이로 인해 예기치 않은 동작이 발생할 수 있습니다.

이 문제를 해결하는 방법에는 두 가지가 있습니다. 1. 대체할 쿠키 만료 2. 쿠키 이름 변경

주요 고려사항

파티션을 나눈 쿠키로 전환할 때는 다음 사항에 유의하세요.

  1. 쿠키의 파티션이 나눠졌는지 여부를 프로그래매틱 방식으로 확인할 수 있는 방법은 없습니다. 하지만 Chrome DevTools에서 쿠키의 파티션을 나눈 상태를 확인할 수 있습니다.
  2. 파티션을 나눈 쿠키는 파티션을 나누지 않은 쿠키를 덮어쓰지 않습니다. 즉, 이름, 도메인, 경로와 같은 속성이 동일한 두 쿠키는 하나만 Partitioned 속성이 있는 경우 별도의 쿠키로 처리됩니다.
  3. 동일한 네트워크 호출에서 파티션을 나눈 쿠키와 동일한 이름의 파티션을 나누지 않은 쿠키가 모두 반환되는 상황을 피하는 것이 좋습니다.

대체할 쿠키 만료

사이트 또는 서비스에서 이름 변경을 수용할 수 없는 경우 파티션을 나누지 않은 기존 쿠키를 만료하면서 파티션을 나눈 새 쿠키를 만들 수 있습니다. 쿠키의 파티셔닝 여부를 확인할 방법은 없지만 Partitioned 속성이 없는 Set-Cookie 헤더는 파티셔닝되지 않은 쿠키에 영향을 미치지 않습니다.

다음 예시는 이름이 같더라도 파티션을 나누지 않은 쿠키(example)는 만료하고 파티션을 나눈 쿠키는 영향을 받지 않은 상태로 두는 방법을 보여줍니다. 파티션을 나눈 새 쿠키(cookieName)가 있는 경우 추가되거나 업데이트됩니다.

Set-Cookie: example=-1;HttpOnly;SameSite=None;Secure;Max-Age:0
Set-Cookie: cookieName=value;Secure;SameSite=None;MaxAge=34560000;Partitioned

쿠키 이름 변경

전환이 원활하게 이루어지도록 하는 가장 효과적인 방법은 파티션을 나눈 쿠키와 파티션을 나누지 않은 쿠키에 다른 이름을 사용하는 것입니다. 예를 들어 'example'이라는 이름의 파티션을 나누지 않은 쿠키가 있는 경우 해당 쿠키를 파티션을 나눈 쿠키로 이전할 수 있습니다.

Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned

쿠키 만료는 프로그래매틱 방식으로 노출되지 않으므로 새 쿠키의 만료 시간을 파티션을 나누지 않은 쿠키의 만료 시간과 일치하도록 설정할 방법이 없습니다. 이 과정에서 쿠키 값을 새로고침하는 것이 실용적일 수 있습니다.

파티션을 나눈 쿠키와 파티션을 나누지 않은 쿠키 모두 유지

전환 기간에는 두 개의 동기화된 쿠키, 즉 파티션을 나눈 쿠키와 그렇지 않은 쿠키를 유지하는 것이 좋습니다. 예를 들어 auth 쿠키와 auth-partitioned 쿠키가 모두 있을 수 있으며, 후자는 Partitioned 속성을 사용하여 설정됩니다.

값이 업데이트될 때마다 두 쿠키를 모두 설정해야 합니다.

  • 서드 파티 쿠키를 차단하지만 아직 CHIPS를 지원하지 않는 클라이언트: 두 쿠키 모두 허용되지 않습니다.
  • 서드 파티 쿠키를 차단하고 CHIPS를 지원하는 클라이언트: auth 쿠키는 거부되지만 auth-partitioned 쿠키는 허용됩니다.
  • 서드 파티 쿠키를 차단하지 않는 클라이언트에서 CHIPS 지원 여부와 관계없이 authauth-partitioned가 모두 허용됩니다.

애플리케이션에서 인증 쿠키를 읽어야 하는 경우 먼저 auth-partitioned를 찾아야 합니다. 하지만 변경사항을 일시적으로 롤백해야 하는 경우 auth 쿠키를 대신 찾아볼 수 있습니다.

대다수의 사용자가 쿠키를 새로고침한 것으로 확인되면 auth-partitioned 쿠키가 지원 중단되고 Partitioned 속성이 일반 인증 쿠키에 추가될 수 있습니다.