Utiliser des cookies SameSite dans ASP.NETWork with SameSite cookies in ASP.NET

De Rick AndersonBy Rick Anderson

SameSite est un projet standard de l' IETF conçu pour offrir une protection contre les attaques de falsification de requête intersites (CSRF).SameSite is an IETF draft standard designed to provide some protection against cross-site request forgery (CSRF) attacks. Initialement rédigée dans 2016, le brouillon standard a été mis à jour dans 2019.Originally drafted in 2016, the draft standard was updated in 2019. La norme mise à jour n’est pas à compatibilité descendante avec la norme précédente, avec comme suit les différences les plus perceptibles :The updated standard is not backward compatible with the previous standard, with the following being the most noticeable differences:

  • Les cookies sans en-tête SameSite sont traités comme SameSite=Lax par défaut.Cookies without SameSite header are treated as SameSite=Lax by default.
  • SameSite=None doit être utilisé pour autoriser l’utilisation de cookies entre sites.SameSite=None must be used to allow cross-site cookie use.
  • Les cookies qui déclarent SameSite=None doivent également être marqués comme Secure.Cookies that assert SameSite=None must also be marked as Secure.
  • Les applications qui utilisent <iframe> peuvent rencontrer des problèmes avec les cookies sameSite=Lax ou sameSite=Strict, car <iframe> est traité comme des scénarios intersites.Applications that use <iframe> may experience issues with sameSite=Lax or sameSite=Strict cookies because <iframe> is treated as cross-site scenarios.
  • La valeur SameSite=None n’est pas autorisée par la norme 2016 et oblige certaines implémentations à traiter ces cookies comme des SameSite=Strict.The value SameSite=None is not allowed by the 2016 standard and causes some implementations to treat such cookies as SameSite=Strict. Consultez prise en charge des navigateurs plus anciens dans ce document.See Supporting older browsers in this document.

Le paramètre SameSite=Lax fonctionne pour la plupart des cookies d’application.The SameSite=Lax setting works for most application cookies. Certaines formes d’authentification comme OpenID Connect (OIDC) et WS-Federation default pour la publication de redirections basées sur.Some forms of authentication like OpenID Connect (OIDC) and WS-Federation default to POST based redirects. Les redirections basées sur la publication déclenchent les protections du navigateur SameSite, donc SameSite est désactivé pour ces composants.The POST based redirects trigger the SameSite browser protections, so SameSite is disabled for these components. La plupart des connexions OAuth ne sont pas affectées en raison de différences de flux de demande.Most OAuth logins are not affected due to differences in how the request flows.

Chaque composant ASP.NET qui émet des cookies doit décider si SameSite est approprié.Each ASP.NET component that emits cookies needs to decide if SameSite is appropriate.

Consultez problèmes connus liés aux problèmes d’applications après l’installation des mises à jour 2019 .net SameSite.See Known Issues for problems with applications after installing the 2019 .Net SameSite updates.

Utilisation de SameSite dans ASP.NET 4.7.2 et 4,8Using SameSite in ASP.NET 4.7.2 and 4.8

.Net 4.7.2 et 4,8 prennent en charge 2019 Draft Standard pour SameSite depuis la publication des mises à jour en décembre 2019..Net 4.7.2 and 4.8 supports the 2019 draft standard for SameSite since the release of updates in December 2019. Les développeurs sont en mesure de contrôler par programmation la valeur de l’en-tête SameSite à l’aide de la propriété HttpCookie. SameSite.Developers are able to programmatically control the value of the SameSite header using the HttpCookie.SameSite property. Si vous affectez à la propriété SameSite la valeur Strict, Laxou None, ces valeurs sont écrites sur le réseau avec le cookie.Setting the SameSite property to Strict, Lax, or None results in those values being written on the network with the cookie. La valeur (SameSiteMode)(-1) indique qu’aucun en-tête SameSite ne doit être inclus sur le réseau avec le cookie.Setting it equal to (SameSiteMode)(-1) indicates that no SameSite header should be included on the network with the cookie. La propriété HttpCookie. Secure, ou’RequireSSL’dans les fichiers de configuration, peut être utilisée pour marquer le cookie comme Secure ou non.The HttpCookie.Secure Property, or 'requireSSL' in config files, can be used to mark the cookie as Secure or not.

Par défaut, les nouvelles instances de HttpCookie sont SameSite=(SameSiteMode)(-1) et Secure=false.New HttpCookie instances will default to SameSite=(SameSiteMode)(-1) and Secure=false. Ces valeurs par défaut peuvent être remplacées dans la section de configuration system.web/httpCookies, où la chaîne "Unspecified" est une syntaxe conviviale de configuration uniquement pour (SameSiteMode)(-1):These defaults can be overridden in the system.web/httpCookies configuration section, where the string "Unspecified" is a friendly configuration-only syntax for (SameSiteMode)(-1):

<configuration>
 <system.web>
  <httpCookies sameSite="[Strict|Lax|None|Unspecified]" requireSSL="[true|false]" />
 <system.web>
<configuration>

ASP.Net émet également quatre cookies spécifiques propres à ces fonctionnalités : authentification anonyme, authentification par formulaire, état de session et gestion des rôles.ASP.Net also issues four specific cookies of its own for these features: Anonymous Authentication, Forms Authentication, Session State, and Role Management. Les instances de ces cookies obtenues dans le runtime peuvent être manipulées à l’aide des propriétés SameSite et Secure comme n’importe quelle autre instance HttpCookie.Instances of these cookies obtained in runtime can be manipulated using the SameSite and Secure properties just like any other HttpCookie instance. Toutefois, en raison de l’émergence du patchwork de la norme SameSite, les options de configuration de ces quatre fonctionnalités sont incohérentes.However, due to the patchwork emergence of the SameSite standard, configuration options for these four features cookies is inconsistent. Les sections de configuration et attributs appropriés, avec les valeurs par défaut, sont indiqués ci-dessous.The relevant configuration sections and attributes, with defaults, are shown below. S’il n’existe aucun SameSite ou Secure attribut associé pour une fonctionnalité, la fonctionnalité est redéfinie sur les valeurs par défaut configurées dans la section system.web/httpCookies présentée ci-dessus.If there is no SameSite or Secure related attribute for a feature, then the feature will fall back on the defaults configured in the system.web/httpCookies section discussed above.

<configuration>
 <system.web>
  <anonymousIdentification cookieRequireSSL="false" /> <!-- No config attribute for SameSite -->
  <authentication>
   <forms cookieSameSite="Lax" requireSSL="false" />
  </authentication>
  <sessionState cookieSameSite="Lax" /> <!-- No config attribute for Secure -->
  <roleManager cookieRequireSSL="false" /> <!-- No config attribute for SameSite -->
 <system.web>
<configuration>

Remarque: « non spécifié » n’est disponible que pour system.web/httpCookies@sameSite pour le moment.Note: 'Unspecified' is only available to system.web/httpCookies@sameSite at the moment. Nous espérons ajouter une syntaxe similaire aux attributs cookieSameSite précédemment affichés dans les futures mises à jour.We hope to add similar syntax to the previously shown cookieSameSite attributes in future updates. La définition de (SameSiteMode)(-1) dans le code fonctionne toujours sur les instances de ces cookies. *Setting (SameSiteMode)(-1) in code still works on instances of these cookies.*

Si vous lisez ce code dans une langue autre que l’anglais, faites-le nous savoir dans ce numéro de discussion GitHub si vous souhaitez afficher les commentaires de code dans votre langue maternelle.If you are reading this in a language other than English, let us know in this GitHub discussion issue if you’d like to see the code comments in your native language.

Recibler des applications .NETRetarget .NET apps

Pour cibler .NET 4.7.2 ou version ultérieure :To target .NET 4.7.2 or later:

  • Vérifiez que le fichier Web. config contient les éléments suivants :Ensure web.config contains the following:

    <system.web>
      <compilation targetFramework="4.7.2"/>
      <httpRuntime targetFramework="4.7.2"/>
    </system.web>
    
    
  • Verify the project file contains the correct TargetFrameworkVersion:

    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
    

    Le Guide de migration de .net offre plus de détails.The .NET Migration Guide has more details.

  • Vérifiez que les packages NuGet dans le projet sont ciblés sur la version de Framework appropriée.Verify NuGet packages in the project are targeted at the correct framework version. Vous pouvez vérifier la version du Framework appropriée en examinant le fichier packages. config , par exemple :You can verify the correct framework version by examining the packages.config file, for example:

    <?xml version="1.0" encoding="utf-8"?>
    <packages>
      <package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net472" />
      <package id="Microsoft.ApplicationInsights" version="2.4.0" targetFramework="net451" />
    </packages>
    

    Dans le fichier packages. config précédent, le package Microsoft.ApplicationInsights :In the preceding packages.config file, the Microsoft.ApplicationInsights package:

    • Est ciblé par rapport à .NET 4.5.1.Is targeted against .NET 4.5.1.
    • L’attribut targetFramework doit être mis à jour pour net472 si un package mis à jour ciblant votre cible de Framework existe.Should have its targetFramework attribute updated to net472 if an updated package targeting your framework target exists.

Versions de .NET antérieures à 4.7.2.NET versions earlier than 4.7.2

Microsoft ne prend pas en charge les versions .NET inférieures à ce 4.7.2 pour l’écriture de l’attribut de cookie du même site.Microsoft does not support .NET versions lower that 4.7.2 for writing the same-site cookie attribute. Nous n’avons pas trouvé de méthode fiable pour :We have not found a reliable way to:

  • Vérifiez que l’attribut est écrit correctement en fonction de la version du navigateur.Ensure the attribute is written correctly based on browser version.
  • Interceptez et ajustez l’authentification et les cookies de session sur les versions antérieures du Framework.Intercept and adjust authentication and session cookies on older framework versions.

Modifications du comportement du correctif décembreDecember patch behavior changes

La modification de comportement spécifique pour .NET Framework est la manière dont la propriété SameSite interprète la valeur None :The specific behavior change for .NET Framework is how the SameSite property interprets the None value:

  • Avant que le correctif ait une valeur de None signifiait :Before the patch a value of None meant:
    • N’émettez pas l’attribut du tout.Do not emit the attribute at all.
  • Après le correctif :After the patch:
    • La valeur Nonesignifie « émettre l’attribut avec une valeur de None».A value of Noneit means "Emit the attribute with a value of None".
    • Une SameSite valeur de (SameSiteMode)(-1) entraîne la non-émission de l’attribut.A SameSite value of (SameSiteMode)(-1) causes the attribute not to be emitted.

La valeur SameSite par défaut pour les cookies d’authentification par formulaire et d’état de session a été modifiée de None à Lax.The default SameSite value for forms authentication and session state cookies was changed from None to Lax.

Résumé de l’impact des modifications sur les navigateursSummary of change impact on browsers

Si vous installez le correctif et émettez un cookie avec SameSite.None, l’une des deux situations suivantes se produit :If you install the patch and issue a cookie with SameSite.None, one of two things will happen:

  • Chrome V80 traite ce cookie en fonction de la nouvelle implémentation et n’applique pas les mêmes restrictions de site sur le cookie.Chrome v80 will treat this cookie according to the new implementation, and not enforce same site restrictions on the cookie.
  • Tout navigateur qui n’a pas été mis à jour pour prendre en charge la nouvelle implémentation suivra l’ancienne implémentation.Any browser that has not been updated to support the new implementation will follow the old implementation. L’ancienne implémentation indique :The old implementation says:
    • Si vous voyez une valeur que vous ne comprenez pas, ignorez-la et basculez vers les mêmes restrictions de site.If you see a value you don't understand, ignore it and switch to strict same site restrictions.

Par conséquent, l’application s’arrête en mode chrome, ou vous pouvez interrompre de nombreux autres emplacements.So either the app breaks in Chrome, or you break in numerous other places.

Historique et modificationsHistory and changes

La prise en charge de SameSite a été implémentée pour la première fois dans .NET 4.7.2 à l’aide de la norme draft 2016.SameSite support was first implemented in .NET 4.7.2 using the 2016 draft standard.

Le 19 novembre 2019 mises à jour pour Windows a mis à jour .NET 4.7.2 + de la norme 2016 à la norme 2019.The November 19, 2019 updates for Windows updated .NET 4.7.2+ from the 2016 standard to the 2019 standard. Des mises à jour supplémentaires sont à venir pour d’autres versions de Windows.Additional updates are forthcoming for other versions of Windows. Pour plus d'informations, consultez Articles de la base de connaissances qui prennent en charge SameSite dans .NET Framework.For more information, see Articles de la base de connaissances qui prennent en charge SameSite dans .NET Framework.

Le brouillon 2019 de la spécification SameSite :The 2019 draft of the SameSite specification:

  • N’est pas à compatibilité descendante avec le brouillon 2016.Is not backwards compatible with the 2016 draft. Pour plus d’informations, consultez prise en charge des navigateurs plus anciens dans ce document.For more information, see Supporting older browsers in this document.
  • Spécifie que les cookies sont traités comme SameSite=Lax par défaut.Specifies cookies are treated as SameSite=Lax by default.
  • Spécifie les cookies qui déclarent explicitement SameSite=None pour permettre la remise entre sites doivent également être marqués comme Secure.Specifies cookies that explicitly assert SameSite=None in order to enable cross-site delivery should also be marked as Secure.
  • Est pris en charge par les correctifs émis comme indiqué dans les Articles de la base de connaissances répertoriés ci-dessus.Is supported by patches issued as described in the KB's listed above.
  • Est planifié pour être activé par chrome par défaut au 2020 février.Is scheduled to be enabled by Chrome by default in Feb 2020. Les navigateurs ont commencé à passer à cette norme dans 2019.Browsers started moving to this standard in 2019.

Problèmes connusKnown Issues

Étant donné que les spécifications de brouillon 2016 et 2019 ne sont pas compatibles, la mise à jour du .NET Framework de novembre 2019 introduit des modifications susceptibles d’être endommagées.Because the 2016 and 2019 draft specifications are not compatible, the November 2019 .Net Framework update introduces some changes that may be breaking.

  • L’état de session et les cookies d’authentification par formulaire sont désormais écrits sur le réseau en tant que Lax au lieu d’être non spécifiés.Session State and Forms Authentication cookies are now written to the network as Lax instead of unspecified.
    • Tandis que la plupart des applications fonctionnent avec des cookies SameSite=Lax, les applications qui sont publiées sur les sites ou les applications qui utilisent des iframe peuvent constater que leurs cookies d’état de session ou d’autorisation de formulaires ne sont pas utilisés comme prévu.While most apps work with SameSite=Lax cookies, apps that POST across sites or applications that make use of iframe may find that their session state or forms authorization cookies aren't being used as expected. Pour remédier à cela, modifiez la valeur cookieSameSite dans la section de configuration appropriée, comme indiqué précédemment.To remedy this, change the cookieSameSite value in the appropriate configuration section as discussed previously.
  • Les HttpCookies qui définissent explicitement SameSite=None dans le code ou la configuration ont maintenant cette valeur écrite avec le cookie, alors qu’elle a été précédemment omise.HttpCookies that explicitly set SameSite=None in code or configuration now have that value written with the cookie, whereas it was previously omitted. Cela peut entraîner des problèmes avec les navigateurs plus anciens qui prennent uniquement en charge le brouillon 2016 standard.This may cause issues with older browsers that only support the 2016 draft standard.
    • Lorsque vous ciblez des navigateurs prenant en charge le brouillon 2019 avec SameSite=None cookies, n’oubliez pas de les marquer également Secure ou s’ils ne sont pas reconnus.When targeting browsers supporting the 2019 draft standard with SameSite=None cookies, remember to also mark them Secure or they may not be recognized.
    • Pour rétablir le comportement 2016 qui consiste à ne pas écrire SameSite=None, utilisez le paramètre d’application aspnet:SupressSameSiteNone=true.To revert to the 2016 behavior of not writing SameSite=None, use the app setting aspnet:SupressSameSiteNone=true. Notez que cela s’applique à tous les HttpCookies de l’application.Note that this will apply to all HttpCookies in the app.

Pour plus d’informations sur Azure App Service la configuration des comportements SameSite dans les applications .net 4.7.2, consultez Azure App service, gestion des cookies SameSite et .NET Framework correctif 4.7.2 .See Azure App Service—SameSite cookie handling and .NET Framework 4.7.2 patch for information about how Azure App Service is configuring SameSite behaviors in .Net 4.7.2 apps.

Prise en charge des navigateurs plus anciensSupporting older browsers

La norme 2016 SameSite stipule que les valeurs inconnues doivent être traitées comme des valeurs SameSite=Strict.The 2016 SameSite standard mandated that unknown values must be treated as SameSite=Strict values. Les applications accessibles depuis des navigateurs plus anciens qui prennent en charge la norme 2016 SameSite peuvent s’arrêter lorsqu’ils obtiennent une propriété SameSite avec la valeur None.Apps accessed from older browsers which support the 2016 SameSite standard may break when they get a SameSite property with a value of None. Les applications Web doivent implémenter la détection du navigateur si elles envisagent de prendre en charge des navigateurs plus anciens.Web apps must implement browser detection if they intend to support older browsers. ASP.NET n’implémente pas la détection du navigateur, car les valeurs des agents utilisateur sont très volatiles et changent fréquemment.ASP.NET doesn't implement browser detection because User-Agents values are highly volatile and change frequently.

L’approche de Microsoft pour résoudre le problème est de vous aider à implémenter des composants de détection de navigateur pour supprimer l’attribut sameSite=None des cookies si un navigateur est connu pour ne pas le prendre en charge.Microsoft's approach to fixing the problem is to help you implement browser detection components to strip the sameSite=None attribute from cookies if a browser is known to not support it. Le Conseil de Google était d’émettre des cookies doubles, l’un avec le nouvel attribut et l’autre sans l’attribut.Google's advice was to issue double cookies, one with the new attribute, and one without the attribute at all. Toutefois, nous considérons le Conseil de Google limité.However we consider Google's advice limited. Certains navigateurs, en particulier les navigateurs mobiles, ont des limites très réduites sur le nombre de cookies d’un site, ou un nom de domaine peut envoyer.Some browsers, especially mobile browsers have very small limits on the number of cookies a site, or a domain name can send. L’envoi de plusieurs cookies, en particulier les cookies volumineux tels que les cookies d’authentification, peut atteindre la limite du navigateur mobile très rapidement, provoquant des échecs d’applications difficiles à diagnostiquer et à résoudre.Sending multiple cookies, especially large cookies like authentication cookies can reach the mobile browser limit very quickly, causing app failures that are hard to diagnose and fix. En outre, il existe un grand écosystème de code et de composants tiers qui peut ne pas être mis à jour pour utiliser une approche de type double cookie.Furthermore as a framework there is a large ecosystem of third party code and components that may not be updated to use a double cookie approach.

Le code de détection du navigateur utilisé dans les exemples de projets de ce référentiel GitHub est contenu dans deux fichiersThe browser detection code used in the sample projects in this GitHub repository is contained in two files

Ces détections sont les agents de navigateur les plus courants qui prennent en charge la norme 2016 et pour lesquels l’attribut doit être complètement supprimé.These detections are the most common browser agents we have seen that support the 2016 standard and for which the attribute needs to be completely removed. Il n’est pas conçu comme une implémentation complète :It isn't meant as a complete implementation:

  • Votre application peut voir les navigateurs que nos sites de test n’ont pas.Your app may see browsers that our test sites do not.
  • Vous devez être prêt à ajouter des détections si nécessaire pour votre environnement.You should be prepared to add detections as necessary for your environment.

Le mode de mise en place de la détection dépend de la version de .NET et de l’infrastructure Web que vous utilisez.How you wire up the detection varies according the version of .NET and the web framework that you are using. Le code suivant peut être appelé sur le site d’appel de HttpCookie :The following code can be called at the HttpCookie call site:

private void CheckSameSite(HttpContext httpContext, HttpCookie cookie)
{
    if (cookie.SameSite == SameSiteMode.None)
    {
        var userAgent = httpContext.Request.UserAgent;
        if (BrowserDetection.DisallowsSameSiteNone(userAgent))
        {
            cookie.SameSite = (SameSiteMode)(-1);
        }
    }
}

Consultez les rubriques suivantes sur les cookies ASP.NET 4.7.2 SameSite :See the following ASP.NET 4.7.2 SameSite cookie topics:

Vérification de la redirection de votre site vers HTTPsEnsuring your site redirects to HTTPS

Pour ASP.NET 4. x, WebForms et MVC, la fonctionnalité de réécriture d’URL d’IIS peut être utilisée pour rediriger toutes les requêtes vers HTTPS.For ASP.NET 4.x, WebForms and MVC, IIS's URL Rewrite feature can be used to redirect all requests to HTTPS. Le code XML suivant montre un exemple de règle :The following XML shows a sample rule:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Redirect to https" stopProcessing="true">
          <match url="(.*)"/>
          <conditions>
            <add input="{HTTPS}" pattern="Off"/>
            <add input="{REQUEST_METHOD}" pattern="^get$|^head$" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent"/>
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Dans les installations locales de la réécriture d’URL IIS , il s’agit d’une fonctionnalité facultative qui peut nécessiter l’installation de.In on-premises installations of IIS URL Rewrite is an optional feature that may need installing.

Tester des applications pour les problèmes SameSiteTest apps for SameSite problems

Vous devez tester votre application avec les navigateurs que vous prenez en charge et parcourir vos scénarios qui impliquent des cookies.You must test your app with the browsers you support and go through your scenarios that involve cookies. Les scénarios de cookies impliquent généralementCookie scenarios typically involve

  • Formulaires de connexionLogin forms
  • Mécanismes de connexion externes tels que Facebook, Azure AD, OAuth et OIDCExternal login mechanisms such as Facebook, Azure AD, OAuth and OIDC
  • Pages acceptant les demandes d’autres sitesPages that accept requests from other sites
  • Pages de votre application conçues pour être incorporées dans des iframesPages in your app designed to be embedded in iframes

Vous devez vérifier que les cookies sont créés, conservés et supprimés correctement dans votre application.You should check that cookies are created, persisted and deleted correctly in your app.

Les applications qui interagissent avec des sites distants, par exemple via une connexion tierce, doivent :Apps that interact with remote sites such as through third-party login need to:

Testez les applications Web à l’aide d’une version du client qui peut s’abonner au nouveau comportement SameSite.Test web apps using a client version that can opt-in to the new SameSite behavior. Chrome, Firefox et chrome Edge ont tous des indicateurs de fonctionnalités d’abonnement qui peuvent être utilisés à des fins de test.Chrome, Firefox, and Chromium Edge all have new opt-in feature flags that can be used for testing. Une fois que votre application applique les correctifs SameSite, testez-la avec des versions client plus anciennes, en particulier Safari.After your app applies the SameSite patches, test it with older client versions, especially Safari. Pour plus d’informations, consultez prise en charge des navigateurs plus anciens dans ce document.For more information, see Supporting older browsers in this document.

Tester avec chromeTest with Chrome

Chrome 78 + donne des résultats trompeurs, car une atténuation temporaire est en place.Chrome 78+ gives misleading results because it has a temporary mitigation in place. Le chrome 78 + atténuation temporaire autorise les cookies datant de moins de deux minutes.The Chrome 78+ temporary mitigation allows cookies less than two minutes old. Le chrome 76 ou 77 avec les indicateurs de test appropriés activés fournit des résultats plus précis.Chrome 76 or 77 with the appropriate test flags enabled provides more accurate results. Pour tester le nouveau comportement SameSite, basculez chrome://flags/#same-site-by-default-cookies sur activé.To test the new SameSite behavior toggle chrome://flags/#same-site-by-default-cookies to Enabled. Les anciennes versions de chrome (75 et versions antérieures) sont signalées pour échouer avec le nouveau paramètre de None.Older versions of Chrome (75 and below) are reported to fail with the new None setting. Consultez prise en charge des navigateurs plus anciens dans ce document.See Supporting older browsers in this document.

Google ne rend pas les versions de chrome plus anciennes disponibles.Google does not make older chrome versions available. Suivez les instructions de Télécharger chrome pour tester les anciennes versions de chrome.Follow the instructions at Download Chromium to test older versions of Chrome. Ne téléchargez pas chrome à partir des liens fournis en recherchant les anciennes versions de chrome.Do not download Chrome from links provided by searching for older versions of chrome.

À partir de la version 80.0.3975.0de la version de la balise de service, les tests d’atténuation temporaire de type Lax + postal peuvent être désactivés à des fins de test à l’aide du nouvel indicateur --enable-features=SameSiteDefaultChecksMethodRigorously pour permettre le test des sites et des services dans l’état final éventuel de la fonctionnalité dans laquelle l’atténuation a été supprimée.Starting in Canary version 80.0.3975.0, the Lax+POST temporary mitigation can be disabled for testing purposes using the new flag --enable-features=SameSiteDefaultChecksMethodRigorously to allow testing of sites and services in the eventual end state of the feature where the mitigation has been removed. Pour plus d’informations, consultez mises à jour des projets de chrome SameSiteFor more information, see The Chromium Projects SameSite Updates

Test avec chrome 80 +Test with Chrome 80+

Téléchargez une version de chrome qui prend en charge son nouvel attribut.Download a version of Chrome that supports their new attribute. Au moment de la rédaction de cet article, la version actuelle est chrome 80.At the time of writing, the current version is Chrome 80. Chrome 80 a besoin que l’indicateur chrome://flags/#same-site-by-default-cookies activé pour utiliser le nouveau comportement.Chrome 80 needs the flag chrome://flags/#same-site-by-default-cookies enabled to use the new behavior. Vous devez également activer (chrome://flags/#cookies-without-same-site-must-be-secure) pour tester le comportement à venir pour les cookies pour lesquels aucun attribut sameSite n’est activé.You should also enable (chrome://flags/#cookies-without-same-site-must-be-secure) to test the upcoming behavior for cookies which have no sameSite attribute enabled. Le chrome 80 est sur la cible pour que le commutateur traite les cookies sans l’attribut en tant que SameSite=Lax, bien qu’avec une période de grâce minutée pour certaines requêtes.Chrome 80 is on target to make the switch to treat cookies without the attribute as SameSite=Lax, albeit with a timed grace period for certain requests. Pour désactiver la période de grâce minutée, chrome 80 peut être lancé avec l’argument de ligne de commande suivant :To disable the timed grace period Chrome 80 can be launched with the following command line argument:

--enable-features=SameSiteDefaultChecksMethodRigorously

Chrome 80 contient des messages d’avertissement dans la console du navigateur concernant les attributs sameSite manquants.Chrome 80 has warning messages in the browser console about missing sameSite attributes. Utilisez la touche F12 pour ouvrir la console du navigateur.Use F12 to open the browser console.

Tester avec SafariTest with Safari

Safari 12 implémentait strictement le brouillon précédent et échoue lorsque la nouvelle valeur de None se trouve dans un cookie.Safari 12 strictly implemented the prior draft and fails when the new None value is in a cookie. None est évité par le biais du code de détection du navigateur qui prend en charge les navigateurs plus anciens dans ce document.None is avoided via the browser detection code Supporting older browsers in this document. Testez les connexions de style du système d’exploitation Safari 12, Safari 13 et WebKit à l’aide de MSAL, ADAL ou toute bibliothèque que vous utilisez.Test Safari 12, Safari 13, and WebKit based OS style logins using MSAL, ADAL or whatever library you are using. Le problème dépend de la version du système d’exploitation sous-jacent.The problem is dependent on the underlying OS version. OSX Mojave (10,14) et iOS 12 sont connus pour avoir des problèmes de compatibilité avec le nouveau comportement de SameSite.OSX Mojave (10.14) and iOS 12 are known to have compatibility problems with the new SameSite behavior. La mise à niveau du système d’exploitation vers OSX Catalina (10,15) ou iOS 13 résout le problème.Upgrading the OS to OSX Catalina (10.15) or iOS 13 fixes the problem. Safari ne dispose pas actuellement d’un indicateur d’abonnement pour tester le nouveau comportement des spécifications.Safari does not currently have an opt-in flag for testing the new spec behavior.

Test avec FirefoxTest with Firefox

La prise en charge de Firefox pour la nouvelle norme peut être testée sur la version 68 + en choisissant dans la page about:config avec l’indicateur de fonctionnalité network.cookie.sameSite.laxByDefault.Firefox support for the new standard can be tested on version 68+ by opting in on the about:config page with the feature flag network.cookie.sameSite.laxByDefault. Il n’y a eu aucun rapport sur les problèmes de compatibilité avec les versions antérieures de Firefox.There haven't been reports of compatibility issues with older versions of Firefox.

Test avec le navigateur Edge (hérité)Test with Edge (Legacy) browser

Edge prend en charge l’ancien standard SameSite.Edge supports the old SameSite standard. Edge version 44 + ne présente aucun problème de compatibilité connu avec la nouvelle norme.Edge version 44+ doesn't have any known compatibility problems with the new standard.

Test avec Edge (chrome)Test with Edge (Chromium)

Les indicateurs SameSite sont définis sur la page edge://flags/#same-site-by-default-cookies.SameSite flags are set on the edge://flags/#same-site-by-default-cookies page. Aucun problème de compatibilité n’a été découvert avec le chrome Edge.No compatibility issues were discovered with Edge Chromium.

Test avec électronTest with Electron

Les versions d’électrons incluent des versions plus anciennes de chrome.Versions of Electron include older versions of Chromium. Par exemple, la version de l’électron utilisée par les équipes est le chrome 66, qui présente le comportement plus ancien.For example, the version of Electron used by Teams is Chromium 66, which exhibits the older behavior. Vous devez effectuer vos propres tests de compatibilité avec la version d’électron que votre produit utilise.You must perform your own compatibility testing with the version of Electron your product uses. Consultez prise en charge des navigateurs plus anciens.See Supporting older browsers.

Rétablissement des correctifs SameSiteReverting SameSite patches

Vous pouvez rétablir le comportement sameSite mis à jour dans .NET Framework applications à son comportement précédent où l’attribut sameSite n’est pas émis pour une valeur de None, et restaurer les cookies d’authentification et de session pour ne pas émettre la valeur.You can revert the updated sameSite behavior in .NET Framework apps to its previous behavior where the sameSite attribute is not emitted for a value of None, and revert the authentication and session cookies to not emit the value. Cette solution doit être considérée comme un correctif extrêmement temporaire, car les modifications du chrome rompent les demandes ou l’authentification de la publication externe pour les utilisateurs utilisant des navigateurs qui prennent en charge les modifications apportées à la norme.This should be viewed as an extremely temporary fix, as the Chrome changes will break any external POST requests or authentication for users using browsers which support the changes to the standard.

Rétablissement du comportement de .NET 4.7.2Reverting .NET 4.7.2 behavior

Mettez à jour le fichier Web. config pour inclure les paramètres de configuration suivants :Update web.config to include the following configuration settings:

<configuration> 
  <appSettings>
    <add key="aspnet:SuppressSameSiteNone" value="true" />
  </appSettings>
 
  <system.web> 
    <authentication> 
      <forms cookieSameSite="None" /> 
    </authentication> 
    <sessionState cookieSameSite="None" /> 
  </system.web> 
</configuration>

Ressources supplémentairesAdditional resources