Microsoft Teams e o atributo de cookie SameSite (atualização 2020)Microsoft Teams and the SameSite cookie attribute (2020 update)

Cookies em breveCookies in brief

Cookies são cadeias de caracteres de texto, enviadas de sites e armazenadas em um computador pelo navegador da Web.Cookies are text strings, sent from websites, and stored on a computer by the web browser. Normalmente, eles são usados para autenticação e personalização, por exemplo, recuperar informações monitoradas, preservar as configurações do usuário, registrar a atividade de navegação e exibir anúncios relevantes.They're typically used for authentication and personalization, e.g., recalling stateful information, preserving user settings, recording browsing activity, and displaying relevant ads. Os cookies sempre estão vinculados a um domínio específico e podem ser instalados por várias partes.Cookies are always linked to a particular domain and can be installed by various parties. Eles são categorizados da seguinte maneira:They are categorized as follows:

CookieCookie EscopoScope
Cookie primárioFirst-party cookie Um cookie primário é criado por sites que um usuário visita e é usado para salvar dados como itens de carrinho de compras, credenciais de logon (por exemplo, cookies de autenticação) e outras análises.A first-party cookie is created by websites that a user visits and is used to save data such as shopping cart items, login credentials (e.g., authentication cookies), and other analytics.
Cookie de terceirosSecond-party cookie Os cookies de terceiros é tecnicamente o mesmo que um cookie de terceiros.A second-party cookies is technically the same as a first-party cookie. A diferença é que os dados são compartilhados com um segundo por meio de um contrato de parceria de dados (por exemplo, análises e relatórios do Microsoft Teams).The difference is that data is shared with a second party via a data partnership agreement (e.g., Microsoft Teams analytics and reporting).
Cookie de terceirosThird-party cookie Um cookie de terceiros é instalado por um domínio diferente daquele que o usuário visitou explicitamente e é usado principalmente para acompanhamento (por exemplo, botões "como"), serviço de anúncios e bate-papos ao vivo.A third-party cookie is installed by a domain other than the one the user explicitly visited and is mainly used for tracking (e.g. "Like" buttons), ad serving, and live chats.

Cookies e solicitações HTTPCookies and HTTP requests

Antes da introdução de restrições de SameSite, quando os cookies foram armazenados no navegador, foram anexados a cada solicitação Web http e enviados ao servidor pelo cabeçalho de resposta http Set-cookie.Before the introduction of SameSite restrictions, when cookies were stored on the browser, they were attached to every HTTP web request and sent to the server by the Set-Cookie HTTP response header. Previsível, esse desempenho tinha o potencial de introduzir vulnerabilidades de segurança, como ataques de falsificação de solicitação entre sites (CSRF).Predictably, that performance had the potential to introduce security vulnerabilities such as Cross-Site Request Forgery (CSRF) attacks. Consulte http cookies.See HTTP cookies. O componente SameSite reduziu essa exposição por meio de sua implementação e gerenciamento no cabeçalho SetCookie.The SameSite component mitigated that exposure through its implementation and management in the SetCookie header.

Atributo SameSite: versão inicialSameSite attribute: initial release

O Google Chrome versão 51 introduziu a especificação SetCookie SameSite como um atributo opcional .Google Chrome version 51 introduced the SetCookie SameSite specification as an optional attribute. A partir da compilação 17672, o Windows 10 introduziu o suporte a cookies SameSite para o navegador Microsoft Edge.Starting with Build 17672, Windows 10 introduced SameSite cookie support for the Microsoft Edge browser.

Os desenvolvedores podem optar por adicionar o atributo de cookie SameSite ao cabeçalho SetCookie ou adicioná-lo a uma das duas configurações, LAX e Strict.Developers could opt out of adding the SameSite cookie attribute to the SetCookie header or they could add it with one of two settings, Lax and Strict. Um atributo SameSite não implementado foi considerado o estado padrão.An unimplemented SameSite attribute was considered the default state.

O Chrome 80, agendado para lançamento em fevereiro de 2020, apresenta novos valores de cookie e impõe políticas de cookies por padrão.Chrome 80, scheduled for release in February 2020, introduces new cookie values and imposes cookie policies by default. Três valores podem ser passados para o atributo SameSite atualizado: estrito, LAXou nenhum.Three values can be passed into the updated SameSite attribute: Strict, Lax, or None. Os cookies que não especificam o atributo SameSite será SameSite=Laxo padrão.Cookies that don't specify the SameSite attribute will default to SameSite=Lax.

SettingSetting ÓrgãoEnforcement ValorValue Especificação de atributoAttribute Specification
RelaxarLax Os cookies serão enviados automaticamente somente em um contexto primário e com solicitações HTTP Get.Cookies will be sent automatically only in a first-party context and with HTTP GET requests. Os cookies do SameSite serão retidos em subprocessos entre sites, como chamadas para carregar imagens ou IFrames, mas serão enviados quando um usuário navegar para a URL de um site externo, por exemplo, seguindo um link.SameSite cookies will be withheld on cross-site sub-requests, such as calls to load images or iframes, but will be sent when a user navigates to the URL from an external site, e.g., by following a link. PadrãoDefault Set-Cookie: key=value; SameSite=Lax
ImpedeStrict O navegador só enviará cookies para solicitações de contexto de primeiro parceiro (solicitações originadas do site que definem o cookie).The browser will only send cookies for first-party context requests (requests originating from the site that set the cookie). Se a solicitação tiver sido originada de uma URL diferente da do local atual, nenhum dos cookies marcados com o Strict atributo será enviado.If the request originated from a different URL than that of the current location, none of the cookies tagged with the Strict attribute will be sent. OpcionalOptional Set-Cookie: key=value; SameSite=Strict
NenhumNone Os cookies serão enviados tanto para as solicitações de contexto de terceiros quanto entre origens; no entanto, o valor deve ser explicitamente None definido como e todas as solicitações do navegador devem seguir o protocolo HTTPS e incluir o Secure atributo que requer uma conexão criptografada.Cookies will be sent in both first-party context and cross-origin requests; however, the value must be explicitly set to None and all browser requests must follow the HTTPS protocol and include the Secure attribute which requires an encrypted connection. Os cookies que não estão de acordo com esse requisito serão rejeitados.Cookies that don't adhere to that requirement will be rejected.
Os dois atributos são obrigatórios juntos.Both attributes are required together. Se apenas None for especificado sem Secure ou se o protocolo HTTPS não for usado, o cookie de terceiros será rejeitado.If just None is specified without Secure or if the HTTPS protocol is not used, the third-party cookie will be rejected.
Opcional, mas, se definido, o protocolo HTTPS é necessário.Optional, but, if set, the HTTPS protocol is required. Set-Cookie: key=value; SameSite=None; Secure

Manipulação de clientes incompatíveisHandling incompatible clients

Importante

No momento SameSite=None , o cliente da área de trabalho do Microsoft Teams ou versões mais antigas do Chrome ou Safari não oferecem suporte a ele.Currently, SameSite=None is not supported by the Teams desktop client or older versions of Chrome or Safari. Consulte clientes incompatíveis conhecidos.See Known Incompatible Clients. No entanto, há duas soluções alternativas:However, there are two workaround solutions:

  1. Verifique o agente de usuário para fornecer a propriedade SameSite correta.Check the user-agent in order to provide the correct SameSite property. Você pode implementar a verificação de agente de usuário em C# e node. js.You can implement the user-agent check in C# and Node.js.
  2. Defina seus atributos de cookies usando os modelos novos e antigos.Set your cookie attributes using both the new and old models. Consulte tratamento de clientes incompatíveisSee Handling incompatible clients

    Se seu aplicativo estiver em execução no cliente do teams desktop e você definir o atributo SameSite SameSite=None como, seu aplicativo não funcionará conforme o esperado.If your app is running in the Teams desktop client, and you set the SameSite attribute to SameSite=None , your app will not work as expected.

O uso de uma das abordagens garantirá que o aplicativo continue funcionando adequadamente quando o cliente da área de trabalho SameSite=None do teams for atualizado para uma versão compatível do Chromium.Using either approach will ensure that your application continues to work properly when the Teams desktop client is upgraded to a SameSite=None compatible version of Chromium.

Implicações e ajustes do teamsTeams implications and adjustments

Aviso

Os aplicativos executados no cliente do teams desktop são incompatíveis SameSite=None com o atributo e não funcionarão conforme o esperado.Applications running in the Teams desktop client are incompatible with the SameSite=None attribute, and they will not work as expected. Confira as soluções alternativasacima.Please see the workaround solutions, above.

  1. Habilite a configuração do SameSite relevante para seus cookies e valide se seus aplicativos e extensões continuam a trabalhar no Microsoft Teams.Enable the relevant SameSite setting for your cookies and validate that your apps and extensions continue to work in Teams.
  2. Se seus aplicativos ou extensões falharem, faça as correções necessárias antes da versão do Chrome 80.If your apps or extensions fail, make the necessary fixes prior to the Chrome 80 release.
  3. Os parceiros internos da Microsoft podem participar da seguinte equipe se precisarem de mais informações ou ajuda com https://teams.microsoft.com/l/team/19%3A08b594cd465e4c0491fb751e823802e2%40thread.skype/conversations?groupId=4d6d04cd-dbf0-43c8-a2ff-f80dd38be034&tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47esse problema:.Microsoft internal partners can join the following team if they need more information or help with this issue: https://teams.microsoft.com/l/team/19%3A08b594cd465e4c0491fb751e823802e2%40thread.skype/conversations?groupId=4d6d04cd-dbf0-43c8-a2ff-f80dd38be034&tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47.

Observação

Para obter uma prática recomendada, é recomendável que você sempre defina os atributos de SameSite para refletir o uso pretendido para seus cookies, não confie no comportamento padrão do navegador.For best practice, it's recommended that you always set SameSite attributes to reflect the intended use for your cookies — don't rely on default browser behavior. Consulte desenvolvedores: preparar para Nova SameSite = nenhum; Configurações de cookies seguros.See Developers: Get Ready for New SameSite=None; Secure Cookie Settings.

Guias, módulos de tarefas e extensões de mensagensTabs, task modules, and message extensions

  • As guias do <iframes> Teams usam para inserir conteúdo que é exibido em um contexto de nível superior ou primário.Teams tabs use <iframes> to embed content that is viewed in a top-level or first-party context.
  • Os módulos de tarefas permitem que você crie experiências pop-up restritas em seu aplicativo do Microsoft Teams.Task modules allow you to create modal popup experiences in your Teams application. Semelhante a uma guia, uma janela modal é aberta dentro da página atual.Similar to a tab, a modal window opens inside the current page.
  • As extensões de mensagem permitem que você insira conteúdo aprimorado na mensagem de chat de recursos externos.Message extensions allow you to insert enriched content into chat message from external resources.

Todos os cookies usados pelo conteúdo incorporado serão considerados terceiros quando o site for exibido em um <iframe>.Any cookies used by embedded content will be considered third-party when the site is displayed in an <iframe>. Além disso, se qualquer recurso remoto em uma página depender de cookies que estão sendo enviados com uma solicitação (por <img> exemplo <script> , marcas, fontes externas e conteúdo personalizado), você precisará garantir que eles estejam marcados para uso entre sites — SameSite=None; Secure ou garantir que um fallback esteja em vigor.In addition, if any remote resources on a page rely on cookies being sent with a request (e.g., <img> and <script> tags, external fonts, and personalized content) you'll need to ensure those are marked for cross-site usage — SameSite=None; Secure — or ensure that a fallback is in place.

AutenticaçãoAuthentication

  • Se você precisar de autenticação para páginas de conteúdo incorporadas em guias, será necessário usar o fluxo de autenticação baseado na Web.If you require authentication for embedded content pages in tabs, you'll need to use the web-based authentication flow.
  • Um fluxo de autenticação baseado na Web também pode ser usado para uma página de configuração, módulo de tarefa ou extensão de mensagens.A web-based authentication flow can also be used for a configuration page, task module, or messaging extension.
  • Você pode usar um fluxo de autenticação baseado na Web para um bot de conversa, você precisará usar um módulo de tarefa.You can use a web-based authentication flow for a conversational bot you'll need to use a task module.

De acordo com as restrições de SameSite atualizadas, um navegador não adicionará um cookie a um site já autenticado se o link for derivado de um site externo.Pursuant to the updated SameSite restrictions, a browser will not add a cookie to an already authenticated web site if the link derives from an external site. Você precisará garantir que seus cookies de autenticação estejam marcados para uso entre sites — SameSite=None; Secure ou garantir que um fallback esteja no local.You'll need to ensure your authentication cookies are marked for cross-site usage — SameSite=None; Secure — or ensure that a fallback is in place.

WebView do sistema AndroidAndroid System WebView

O Android WebView é um componente do sistema Chrome que permite que aplicativos Android exibam conteúdo da Web.Android WebView is a Chrome system component that allows Android apps to display web content. Enquanto as novas restrições se tornarão o padrão, começando com o Chrome 80, elas não serão aplicadas imediatamente em webviews.While the new restrictions will become the default, starting with Chrome 80, they will not be immediately enforced on WebViews. Eles serão aplicados no futuro.They will be applied in the future. Para preparar, o Android permite que aplicativos nativos definam cookies diretamente por meio da API CookeManager:To prepare, Android allows native apps to set cookies directly via the CookeManager API:

  • Para cookies que são necessários apenas em um contexto primário, você deve declará-los como SameSite=Lax ou SameSite=Strict, conforme apropriado.For cookies that are only needed in a first-party context, you should declare them as SameSite=Lax or SameSite=Strict, as appropriate.
  • Para cookies necessários em um contexto de terceiros, você deve garantir que eles sejam declarados SameSite=None; Securecomo.For cookies needed in a third-party context, you should ensure that they are declared as SameSite=None; Secure.

Saiba maisLearn more

Exemplos de SameSiteSameSite examples

Receitas de cookies SameSiteSameSite cookie recipes

Clientes incompatíveis conhecidosKnown Incompatible Clients

Desenvolvedores: Prepare-se para a nova SameSite = nenhum; Configurações de cookies segurosDevelopers: Get Ready for New SameSite=None; Secure Cookie Settings

Impacto de conexão OpenIdOpenId Connect impact
Futuras alterações de cookies do SameSite no ASP.NET e no ASP.NET CoreUpcoming SameSite Cookie Changes in ASP.NET and ASP.NET Core