Microsoft Teams и атрибут Самесите cookie (обновление 2020)Microsoft Teams and the SameSite cookie attribute (2020 update)

Краткие файлы cookieCookies in brief

Файлы cookie — это текстовые строки, которые отправляются с веб-сайтов и хранятся на компьютере веб-браузером.Cookies are text strings, sent from websites, and stored on a computer by the web browser. Обычно они используются для проверки подлинности и личной настройки, например, для отзыва сведений о состоянии, сохранения параметров пользователя, записи сведений о просмотре и отображения релевантных рекламных объявлений.They're typically used for authentication and personalization, e.g., recalling stateful information, preserving user settings, recording browsing activity, and displaying relevant ads. Файлы cookie всегда связаны с определенным доменом и могут устанавливаться различными сторонами.Cookies are always linked to a particular domain and can be installed by various parties. Они делятся на следующие категории:They are categorized as follows:

CookieCookie ОбластьScope
Файл cookie первого производителяFirst-party cookie Основной файл cookie создается веб-сайтами, которые пользователь посетит и использует для сохранения данных, таких как элементы корзины для покупок, учетные данные входа (например, файлы cookie проверки подлинности) и другие аналитики.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 второй стороныSecond-party cookie Файлы cookie второй стороны технически являются такими же, как и у первого файла cookie.A second-party cookies is technically the same as a first-party cookie. Разница заключается в том, что данные используются совместно со второй стороной через соглашение о партнерстве связи (например, Microsoft Teams Analytics и Reporting).The difference is that data is shared with a second party via a data partnership agreement (e.g., Microsoft Teams analytics and reporting).
Файл cookie стороннего производителяThird-party cookie Сторонний файл cookie устанавливается доменом, отличным от того, который пользователь посетит явным образом, и в основном используется для отслеживания (например, кнопок "Like"), обслуживания и интерактивных бесед.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.

Файлы cookie и HTTP-запросыCookies and HTTP requests

Прежде чем приступить к введению ограничений Самесите, когда файлы cookie были сохранены в браузере, они были подключены к каждому HTTP-запросу и отправляются на сервер с помощью заголовка 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. Предсказуемо, это может привести к возникновению уязвимостей системы безопасности, таких как атаки на межсайтовые запросы (КСРФ).Predictably, that performance had the potential to introduce security vulnerabilities such as Cross-Site Request Forgery (CSRF) attacks. Просмотрите файлы cookie HTTP.See HTTP cookies. Компонент Самесите воспринимается с помощью его реализации и управления в заголовке Сеткукие.The SameSite component mitigated that exposure through its implementation and management in the SetCookie header.

Атрибут Самесите: Initial ReleaseSameSite attribute: initial release

В Google Chrome версии 51 появилась спецификация Сеткукие Самесите в качестве необязательного атрибута.Google Chrome version 51 introduced the SetCookie SameSite specification as an optional attribute. Начиная с сборки 17672, Windows 10 предоставила поддержку Самесите cookie для браузера Microsoft Edge.Starting with Build 17672, Windows 10 introduced SameSite cookie support for the Microsoft Edge browser.

Разработчики могут отказаться от добавления атрибута Самесите cookie к заголовку Сеткукие или добавить его с одним из двух параметров: нестрогая и строгая.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. Нереализованный атрибут Самесите рассматривался как состояние по умолчанию.An unimplemented SameSite attribute was considered the default state.

Хром 80, запланированный для выпуска в феврале 2020, представляет новые значения файлов cookie и по умолчанию накладывает политики файлов cookie.Chrome 80, scheduled for release in February 2020, introduces new cookie values and imposes cookie policies by default. В обновленный атрибут Самесите можно передать три значения: строгий, нестрогийили None.Three values can be passed into the updated SameSite attribute: Strict, Lax, or None. Файлы cookie, для SameSite=Laxкоторых не указан атрибут самесите, по умолчанию будут иметь значение.Cookies that don't specify the SameSite attribute will default to SameSite=Lax.

SettingSetting Принудительное применениеEnforcement ЗначениеValue Спецификация атрибутаAttribute Specification
НизкийLax Файлы cookie будут отправляться автоматически только в контексте первого разработчика и с запросами HTTP GET.Cookies will be sent automatically only in a first-party context and with HTTP GET requests. Файлы cookie Самесите будут храниться на подзапросах между сайтами, например вызовы для загрузки изображений или iframes, но будут отправлены, когда пользователь переходит по URL-адресу с внешнего сайта, например, после ссылки.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. DefaultDefault Set-Cookie: key=value; SameSite=Lax
ЖесткStrict Браузер будет отправлять файлы cookie только для запросов первого производителя (запросов, исходящих от сайта, на котором задан файл cookie).The browser will only send cookies for first-party context requests (requests originating from the site that set the cookie). Если получен запрос с URL-адреса, отличного от URL-адреса текущего расположения, то не будет отправлен ни один Strict из файлов cookie, помеченных атрибутом.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. НеобязательнаOptional Set-Cookie: key=value; SameSite=Strict
НетNone Файлы cookie отправляются как в первом, так и в запросах между источниками; Однако значение должно быть явно задано, None а все запросы браузеров должны следовать протоколу HTTPS и включать атрибут Secure , для которого требуется зашифрованное подключение.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. Файлы cookie, которые не соответствуют этому требованию, будут отклонены.Cookies that don't adhere to that requirement will be rejected.
Оба атрибута являются обязательными.Both attributes are required together. None Если он указан без Secure или не используется протокол HTTPS, файл cookie стороннего производителя будет отклонен.If just None is specified without Secure or if the HTTPS protocol is not used, the third-party cookie will be rejected.
Необязательный параметр, но если он установлен, то протокол HTTPS является обязательным.Optional, but, if set, the HTTPS protocol is required. Set-Cookie: key=value; SameSite=None; Secure

Обработка несовместимых клиентовHandling incompatible clients

Важно!

SameSite=None В настоящее время не поддерживается клиентскими рабочими столами и более старыми версиями Chrome или Safari.Currently, SameSite=None is not supported by the Teams desktop client or older versions of Chrome or Safari. Просмотр известных несовместимых клиентов.See Known Incompatible Clients. Однако существует два обходных решения:However, there are two workaround solutions:

  1. Проверьте пользовательский агент, чтобы предоставить правильное свойство Самесите.Check the user-agent in order to provide the correct SameSite property. Вы можете реализовать проверку агента пользователя в C# и node. js.You can implement the user-agent check in C# and Node.js.
  2. Настройте атрибуты файлов cookie, используя новые и старые модели.Set your cookie attributes using both the new and old models. Ознакомьтесь с разработкой несовместимых клиентовSee Handling incompatible clients

    Если ваше приложение запущено в настольном клиенте Teams, а атрибут Самесите имеет SameSite=None значение, ваше приложение не будет работать должным образом.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.

Любой из этих подходов гарантирует, что приложение будет работать правильно при обновлении клиента для настольных компьютеров Teams до SameSite=None совместимой версии чромиум.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.

Влияние и корректировки TeamsTeams implications and adjustments

Предупреждение

Приложения, работающие на настольном клиенте Teams SameSite=None , несовместимы с атрибутом и не будут работать должным образом.Applications running in the Teams desktop client are incompatible with the SameSite=None attribute, and they will not work as expected. Ознакомьтесь с решением, описанным выше.Please see the workaround solutions, above.

  1. Включите подходящий параметр Самесите для файлов cookie и убедитесь, что ваши приложения и расширения продолжают работать в Teams.Enable the relevant SameSite setting for your cookies and validate that your apps and extensions continue to work in Teams.
  2. Если произошел отказ ваших приложений или расширений, выполните необходимые исправления перед выпуском Chrome 80.If your apps or extensions fail, make the necessary fixes prior to the Chrome 80 release.
  3. Внутренние партнеры корпорации Майкрософт могут присоединиться к следующей команде, если им нужна дополнительная информация или Справка https://teams.microsoft.com/l/team/19%3A08b594cd465e4c0491fb751e823802e2%40thread.skype/conversations?groupId=4d6d04cd-dbf0-43c8-a2ff-f80dd38be034&tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47по этой причине:.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.

Примечание

Рекомендуется всегда устанавливать атрибуты Самесите, чтобы отражать предполагаемое использование файлов cookie, не полагайтесь на поведение браузера по умолчанию.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. Сведения о разработчиках: подготовка к созданию нового самесите = None; Защита параметров файлов cookie.See Developers: Get Ready for New SameSite=None; Secure Cookie Settings.

Вкладки, модули задач и расширения сообщенийTabs, task modules, and message extensions

  • Вкладки Teams <iframes> используются для внедрения содержимого, которое просматривается в контексте верхнего уровня или первого производителя.Teams tabs use <iframes> to embed content that is viewed in a top-level or first-party context.
  • Модули задач позволяют создавать Модальные всплывающие окна в приложении Teams.Task modules allow you to create modal popup experiences in your Teams application. Как и на вкладке, в текущей странице открывается модальное окно.Similar to a tab, a modal window opens inside the current page.
  • Расширения сообщений позволяют вставлять обогащенные материалы в сообщения чата из внешних ресурсов.Message extensions allow you to insert enriched content into chat message from external resources.

Все файлы cookie, используемые внедренным контентом, будут считаться сторонним поставщиком, когда сайт отображается <iframe>в.Any cookies used by embedded content will be considered third-party when the site is displayed in an <iframe>. Кроме того, если на странице есть удаленные ресурсы, которые отправляются с помощью запросов (например, <img> <script> тегов, внешних шрифтов и персональных контента), необходимо убедиться в том, что они помечены для использования на нескольких сайтах — SameSite=None; Secure или убедиться, что резервный вариант установлен.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.

Проверка подлинностиAuthentication

  • Если для внедренных страниц содержимого на вкладках требуется проверка подлинности, необходимо использовать веб-процесс проверки подлинности на основе веб-сайта.If you require authentication for embedded content pages in tabs, you'll need to use the web-based authentication flow.
  • Веб-процесс проверки подлинности также можно использовать для страницы конфигурации, модуля задачи или расширения обмена сообщениями.A web-based authentication flow can also be used for a configuration page, task module, or messaging extension.
  • Вы можете использовать процесс проверки подлинности на основе веб-сайта для диалогового окна "робот", вам потребуется использовать модуль задачи.You can use a web-based authentication flow for a conversational bot you'll need to use a task module.

В соответствии с обновленными ограничениями Самесите браузер не добавляет файл cookie на веб-сайт, на котором уже выполнена проверка подлинности, если эта ссылка является производной от внешнего сайта.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. Необходимо убедиться, что файлы cookie для проверки подлинности отмечены для использования на SameSite=None; Secure нескольких сайтах — или убедиться, что резервный сервер установлен.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.

Система Вебвиев системы AndroidAndroid System WebView

Android Вебвиев это компонент системы Chrome, позволяющий приложениям Android отображать веб-контент.Android WebView is a Chrome system component that allows Android apps to display web content. В то время как новые ограничения станут значением по умолчанию, начиная с Chrome 80, они не будут немедленно применены к представлениям в Интернете.While the new restrictions will become the default, starting with Chrome 80, they will not be immediately enforced on WebViews. Они будут применены в будущем.They will be applied in the future. Чтобы подготовить, Android позволяет встроенным приложениям задавать файлы cookie непосредственно через API кукеманажер:To prepare, Android allows native apps to set cookies directly via the CookeManager API:

  • Для файлов cookie, которые необходимы только в первом контексте, их необходимо объявить как SameSite=Lax или SameSite=Strict(при необходимости).For cookies that are only needed in a first-party context, you should declare them as SameSite=Lax or SameSite=Strict, as appropriate.
  • Для файлов cookie, необходимых для стороннего контекста, необходимо убедиться, что они объявлены как SameSite=None; Secure.For cookies needed in a third-party context, you should ensure that they are declared as SameSite=None; Secure.

Дополнительные сведенияLearn more

Примеры СамеситеSameSite examples

Рецепты для файлов cookie СамеситеSameSite cookie recipes

Известные несовместимые клиентыKnown Incompatible Clients

Разработчики: Подготовьтесь к использованию нового Самесите = None; Параметры безопасного файла cookieDevelopers: Get Ready for New SameSite=None; Secure Cookie Settings

Влияние подключения OpenIdOpenId Connect impact
Предстоящие изменения файлов cookie Самесите в ядре ASP.NET и ASP.NETUpcoming SameSite Cookie Changes in ASP.NET and ASP.NET Core