Transición de cookies no particionadas a particiones particionadas

Cuando realices la transición de tu sitio a las cookies particionadas, es posible que se produzca un comportamiento inesperado si hay una cookie particionada y una no particionada con los mismos nombres para un cliente determinado.

La configuración de una cookie particionada no anulará ni reemplazará una cookie no particionada existente con el mismo nombre. Ambas existirán, siempre y cuando las cookies de terceros estén habilitadas, pero en contenedores de cookies separados. Cuando se inhabiliten las cookies de terceros, solo se aceptará la particionada. Si ambas cookies están presentes, no es posible saber de manera programática cuál está particionada y cuál no, y esto puede generar un comportamiento inesperado.

Existen dos opciones posibles para abordar este problema: 1. Haz que venza la cookie que reemplazarás. 2. Cómo cambiar el nombre de las cookies

Consideraciones clave

Cuando realices la transición a las cookies particionadas, ten en cuenta lo siguiente:

  1. No hay forma de determinar de forma programática si una cookie enviada en una solicitud HTTP está particionada o no. Sin embargo, puedes determinar el estado particionado de una cookie en las Herramientas para desarrolladores de Chrome. Puedes distinguir entre cookies particionadas y no particionadas que no tienen el atributo HttpOnly con la API de CookieStore.
  2. Las cookies particionadas no reemplazan las cookies no particionadas: dos cookies que son exactamente iguales (es decir, tienen los mismos atributos, como nombre, dominio o ruta) se tratarán como cookies separadas si solo una tiene el atributo Partitioned.
  3. Es mejor evitar una situación en la que se devuelvan una cookie particionada y una no particionada con el mismo nombre en la misma llamada de red.

Haz que venzan las cookies que reemplazarás

Si tu sitio o servicio no puede admitir un cambio de nombre, puedes crear una nueva cookie particionada mientras vence la cookie no particionada existente. Si bien no hay forma de determinar si una cookie está particionada o no, los encabezados Set-Cookie con un atributo Partitioned no afectarán a las cookies que no están particionadas.

En el siguiente ejemplo, se muestra cómo vencer la cookie no particionada llamada example y dejar sin afectar las cookies particionadas, incluso si tienen el mismo nombre. Se agregará o actualizará una nueva cookie particionada llamada cookieName si ya existe.

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

Cambia el nombre de tus cookies

La forma más sólida de garantizar que haya una transición fluida es usar nombres diferentes para tus cookies particionadas y no particionadas. Por ejemplo, si tienes una cookie no particionada llamada “example”, puedes migrarla a una cookie particionada.

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

Dado que el vencimiento de la cookie no se expone de forma programática, no hay forma de configurar el vencimiento de la cookie nueva para que coincida con el de la cookie no particionada. Puede ser práctico actualizar el valor de la cookie durante este proceso.

Mantén cookies particionadas y no particionadas

Durante el período de transición, considera mantener dos cookies sincronizadas separadas: una que esté particionada y otra que no. Por ejemplo, puedes tener cookies auth y auth-partitioned, en las que la última se configuró con el atributo Partitioned.

Cada vez que se actualice el valor, debes intentar configurar ambas cookies.

  • En los clientes que bloquean las cookies de terceros, pero aún no admiten CHIPS, no se aceptará ninguna cookie.
  • En los clientes que bloquean las cookies de terceros y admiten CHIPS, se rechazará la cookie auth, pero se aceptará la cookie auth-partitioned.
  • En los clientes que no bloquean las cookies de terceros, sin importar si admiten CHIPS, se aceptan auth y auth-partitioned.

Cuando la aplicación necesite leer la cookie de autenticación, debes buscar auth-partitioned primero. Sin embargo, si tienes que revertir de forma temporal el cambio, puedes recurrir a buscar la cookie auth.

Una vez que hayas establecido que a la mayoría de los usuarios se les actualizaron las cookies, podría quitarse la cookie auth-partitioned y agregar el atributo particionado a la cookie de autenticación normal.