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. Ele não é enviado em solicitações GET que são entre 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. Um pedido teria de 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 para os padrões no SameSite propõem proteger os aplicativos tornando o comportamento padrão de SameSite
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, os aplicativos Web autenticados com a plataforma de identidade da Microsoft podem definir a SameSite
propriedade para None
cookies que são usados em cenários entre domínios quando executados no navegador Chrome.
Outros navegadores (veja aqui uma lista completa) seguem o comportamento anterior e SameSite
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: