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;