Processar as alterações de cookies do SameSite no browser do Chrome
O que é SameSite?
SameSite
é uma propriedade que pode ser definida em cookies HTTP para evitar ataques Cross Site Request Forgery (CSRF) em aplicações web:
- Quando
SameSite
é definido como Lax, o cookie é enviado em solicitações dentro do mesmo site e em solicitações GET de outros sites. Não é enviado em pedidos GET entre diferentes domínios. - Um valor de Strict garante que o cookie seja enviado em solicitações apenas dentro do mesmo site.
Por padrão, o valor NÃO é definido em navegadores e é por isso que não há restrições sobre cookies SameSite
sendo enviados em solicitações. Uma aplicação precisaria optar pela proteção CSRF, definindo Lax ou Strict de acordo com os seus requisitos.
Alterações no SameSite e impacto na autenticação
Atualizações recentes nos padrões do SameSite propõem proteger as aplicações tornando o comportamento padrão de SameSite
para quando nenhum valor é definido como Lax. Esta atenuação significa que os cookies serão restritos a pedidos HTTP, exceto GET feitos a partir de outros sites. Além disso, um valor de Nenhum é introduzido para remover as restrições de cookies que estão sendo enviados. Essas atualizações serão lançadas em breve em uma próxima versão 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. Uma vez que este pedido é um pedido entre domínios (de login.microsoftonline.com
para o seu domínio, por exemplo https://contoso.com/auth
), os cookies que foram definidos pela sua aplicação enquadram-se agora nas novas regras do 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 login. Existem outros cookies descartados pelo Microsoft Entra ID 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 amostras
Para superar as falhas de autenticação, as aplicações web que autenticam com a plataforma de identidade da Microsoft podem definir a propriedade SameSite
para None
para cookies que são utilizados em cenários entre domínios quando executados no navegador Chrome.
Outros navegadores (veja aqui uma lista completa) seguirão o comportamento anterior e não incluirão os cookies se SameSite=None
estiver definido.
É por isso que, para suportar a autenticação em vários navegadores, os aplicativos da Web terão que definir o SameSite
valor como None
apenas 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 em torno das alterações do SameSite em nossos exemplos ASP.NET e ASP.NET Core.
Para obter detalhes sobre como lidar com cookies do SameSite no ASP.NET e no ASP.NET Core, consulte também:
Próximos passos
Saiba mais sobre o SameSite e o cenário do aplicativo Web: