Manipular alterações de cookie SameSite no navegador Chrome

O que é o SameSite?

SameSite é uma propriedade que pode ser definida em cookies HTTP para evitar ataques de CSRF (falsificação de solicitação entre sites) em aplicativos Web:

  • Quando SameSite é definido como Lax, o cookie é enviado em solicitações no mesmo site e em solicitações GET de outros sites. Ele não é enviado em solicitações GET entre domínios.
  • Um valor Strict garante que o cookie seja enviado em solicitações somente dentro do mesmo site.

Por padrão, o valor SameSite não é definido em navegadores e é por isso que não há restrições ao envio de cookies em solicitações. Um aplicativo precisaria aceitar a proteção CSRF definindo Lax ou Strict de acordo com os próprios requisitos.

Alterações e impacto de SameSite na autenticação

As atualizações recentes dos padrões no SameSite propõem proteger aplicativos tornando o comportamento padrão SameSite quando nenhum valor estiver definido como Lax. Essa mitigação significa que os cookies serão restritos em solicitações HTTP, exceto em GET realizadas de outros sites. Além disso, um valor None é introduzido para remover restrições ao envio de cookies. Em breve, essas atualizações serão lançadas em uma versão futura do navegador Chrome.

Quando os aplicativos Web são autenticados com a plataforma de identidade da Microsoft usando o modo de resposta "form_post", o servidor de logon responde ao aplicativo usando um HTTP POST para enviar os tokens ou o código de autenticação. Como essa solicitação é uma solicitação entre domínios (do login.microsoftonline.com ao seu domínio – por exemplo, https://contoso.com/auth), os cookies que foram definidos pelo seu aplicativo agora se enquadram nas novas regras no Chrome. Os cookies que precisam ser usados em cenários entre sites são cookies que contêm os valores state e nonce, que também são enviados na solicitação de logon. Há outros cookies descartados pelo Microsoft Entra para manter a sessão.

Se você não atualizar seus aplicativos Web, esse novo comportamento resultará em falhas de autenticação.

Mitigação e exemplos

Para superar as falhas de autenticação, os aplicativos Web que se autenticam com a plataforma Microsoft Identity podem definir a propriedade SameSite como None para cookies que são usados em cenários entre domínios quando executados no navegador Chrome. Outros navegadores (obtenha uma lista completa aqui) seguem o comportamento anterior de SameSite e não incluirão os cookies se SameSite=None estiver definido. É por isso que, para dar suporte à autenticação em vários navegadores, os aplicativos Web precisarão definir o valor SameSite para None somente no Chrome e deixar o valor vazio em outros navegadores.

Essa abordagem é demonstrada no código de exemplo a seguir:

A tabela a seguir apresenta as solicitações pull que funcionaram nas alterações SameSite em nossos exemplos de ASP.NET e de ASP.NET Core.

Amostra Solicitação de pull
Tutorial incremental de aplicativo Web ASP.NET Core Correção de cookie SameSite n. 261
Exemplo de aplicativo Web ASP.NET MVC Correção de cookie SameSite n. 35
active-directory-dotnet-admin-restricted-scopes-v2 Correção de cookie SameSite n. 28

Para obter detalhes sobre como lidar com cookies SameSite no ASP.NET e ASP.NET Core, consulte também:

Próximas etapas

Saiba mais sobre o SameSite e o cenário do aplicativo Web: