ASP.NET Core 3.1 — IdentityServer4 — Cookie SameSite
Em Maio de 2019 os responsáveis pelo desenvolvimento do navegador Chrome, anunciaram que fariam algumas mudanças relacionadas a segurança e uma melhor experiência do usuário.
Problem
No dia 4 de fevereiro de 2020, a atualização do Chrome passou a não compartilhar mais os cookies entre aplições third-party (cross-site). Isso significa que aplicações que possuem redirecionamentos entre si, mas entre diferentes sub-domínios ( a.domain.com e b.domain.com) não poderiam mais compartilhar os mesmos cookies por padrão e isso acabou gerando diversos problemas para as aplicações no mundo todo.
SameSite Attribute
A RFC6265bis introduziu o atributo SameSite que permite que o cookie funcione de duas maneiras diferentes, strict
ou lax
, não especificado por padrão.
O valor lax
vai permitir que o cookie transite entre as requisições de diferentes sub-domínios e vai resolver o problema.
IdentityServer4 and Web MVC Application
Nos meus posts sobre o IdentityServer4 este problema também ocorreu, pois a aplicação Web MVC quando o usuário não está logado, automaticamente é direcionada para o IdentityServer4 para realizar o login e retornar, este processo usa o sub-domínio ( cross-site) justamente o cenário do problema.
A solução para resolver o problema é bem simples, no arquivo Startup.cs da aplicação Web MVC e IdentityServer4 basta incluir a linha a seguir e tudo vai funcionar.
app.UseCookiePolicy(new CookiePolicyOptions { MinimumSameSitePolicy = SameSiteMode.Lax });
Chrome Configurations
É possível através do Chorme realizar as configurações abaixo para que retorne ao estado anterior onde o problema não ocorre, mas imagina você ter que avisar o seu usuário disso, seria muito ruim, mas é possível para contornar temporariamente o problema
chrome://flags/#cookies-without-same-site-must-be-secure
chrome://flags/#enable-removing-all-third-party-cookies
Microsoft
A Microsoft divulgou recentemente um artigo falando sobre esta situação que você pode conferir: Effect on customer websites and Microsoft services and products in Chrome version 80 or later
Affected Applications
Possíveis cenários das aplicações afetadas são:
- Microsserviços que se comunicam por diferentes sub-domínios;
- Monolitos que se comunicam com outras aplicções através de iframe em diferentes sub-domínios;
Originally published at http://alextochetto.com on October 26, 2020.