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

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

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

이 문제를 해결하는 방법에는 두 가지가 있습니다. 1. 교체할 쿠키의 만료를 처리합니다. 2. 쿠키 이름 바꾸기

주요 고려사항

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

  1. HTTP 요청으로 전송된 쿠키가 파티션된 쿠키인지 아닌지 프로그래매틱 방식으로 확인할 방법은 없습니다. 하지만 Chrome DevTools에서 쿠키의 파티션된 상태를 확인할 수 있습니다. CookieStore API를 사용하여 HttpOnly 속성이 없는 파티션된 쿠키와 파티션되지 않은 쿠키를 구분할 수 있습니다.
  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

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

파티셔닝된 쿠키와 파티션을 나누지 않은 쿠키 모두 유지

전환 기간에는 파티션된 쿠키와 파티션되지 않은 쿠키를 별도로 두고 동기화하는 것이 좋습니다. 예를 들어 authauth-partitioned 쿠키가 모두 있을 수 있으며, 여기서 두 쿠키는 Partitioned 속성을 사용하여 설정됩니다.

값이 업데이트될 때마다 두 쿠키를 모두 설정해 보세요.

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

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

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