Skip to main content
Les cookies, utilisés pour l’authentification et le maintien des sessions, peuvent être sécurisés en définissant des attributs. Auth0 utilise des cookies pour les éléments suivants :
  • OIDC Enterprise avec form_post
  • liaison HTTP-POST
  • Message web (aussi appelé checkSession)

Attributs SameSite

Vous pouvez ajouter des attributs de cookie SameSite dans l’en-tête de réponse HTTP set-cookie afin de restreindre le comportement du navigateur. Cela peut empêcher le navigateur d’envoyer la paire key=value du cookie selon le type d’interaction qui a déclenché la requête HTTP. Les valeurs d’attribut acceptées sont les suivantes : Voici certains attributs de cookie que vous connaissez peut-être : À la réception, le navigateur analyse les en-têtes et met à jour son stockage de cookies en conséquence. À compter de février 2020, Google Chrome v80 a modifié la façon dont il gère les cookies. Auth0 a apporté les changements suivants à sa gestion des cookies :
  • Les cookies sans attribut SameSite défini seront réglés sur lax
  • Les cookies avec SameSite=none doivent être sécurisés; sinon, ils ne peuvent pas être enregistrés dans le stockage de cookies du navigateur
L’objectif de ces changements est d’améliorer la sécurité et d’aider à atténuer les attaques CSRF. Ces changements touchent les cookies suivants :
  • auth0 (gère les sessions utilisateur)
  • auth0-mf (gère les renseignements liés à l’)
  • did (l’identifiant d’un appareil/agent utilisateur)
Pour ces cookies, Auth0 va :
  • Définir l’attribut SameSite sur none, le cookie exigeant l’utilisation de HTTPS (peu importe l’environnement)
  • Définir des cookies de solution de secours au cas où un navigateur hérité ne prendrait pas en charge la définition de SameSite à None. Ces cookies de solution de secours sont auth0_compat, auth0-mf_compat et did_compat
Le schéma ci-dessous montre ce qui se passe lors d’une première interaction. L’utilisateur final demande une page qu’il n’a jamais visitée auparavant. Le serveur modifie son rendu lorsque le visiteur revient et définit un cookie de visite. La partie grise de l’en-tête set-cookie correspond au cookie réel key=value. La partie rouge correspond aux attributs du cookie que le navigateur stocke dans le stockage de cookies afin de décider plus tard s’il doit inclure la paire de cookie key+value dans les requêtes.
sameSite Cookie Attributes Fresh Interaction Flow
Le schéma suivant montre ce qui se passe si vous faites la même requête pendant la même session de navigation. La requête est envoyée au même serveur et, comme les attributs du cookie n’empêchent pas l’envoi du cookie de visite, celui-ci est automatiquement inclus comme en-tête de cookie dans la requête. Le serveur répondra alors différemment, puisqu’il a reçu ce cookie.
sameSite Cookie Attributes Cookie Return Interaction flow

Fonctionnalités concernées

Le tableau ci-dessous montre comment les changements apportés à l’attribut SameSite peuvent affecter vos applications. Si vous utilisez une application web avec des sessions (p. ex., pour enregistrer les préférences des utilisateurs, les paniers d’achat, etc.) et que vous permettez aux utilisateurs de se connecter à l’aide de comme Google, Github ou Auth0, vous vous fiez alors aux cookies pour assurer cette fonctionnalité. Certains changements au comportement des cookies dans les navigateurs peuvent nuire à l’expérience utilisateur. Google Chrome, par exemple, est le premier éditeur de navigateur à déployer un changement qui pourrait ne pas être compatible avec votre application web. Vous pourriez remarquer que, dans Google Chrome et Microsoft Edge, le comportement de SameSite lorsqu’il n’est pas défini est passé d’une valeur par défaut de none à lax. Par exemple, supposons que vous créiez une nouvelle interface utilisateur et que vous ayez plusieurs services auxquels vous accédez par proxy via une passerelle Auth0. À cette passerelle, vous créez une session par cookie. Si vous faites une requête cross-origin, vous pourriez voir cet avertissement dans la console Javascript : A cookie associated with a cross-site resource (URL) was set without the SameSite attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with SameSite=None and Secure. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032

Mesures à prendre

Pour vous préparer à ce changement, vous devriez :
  • Consulter la liste des navigateurs non pris en charge.
  • Configurer votre application pour utiliser SameSite=none si elle utilise response_mode=form_post lorsqu’elle interagit avec Auth0 (notez que Chrome ne fait aucune exception, même pour localhost)
  • Marquer votre cookie comme sécurisé si son attribut SameSite est défini à None. Sinon, le navigateur le rejettera. Si vous utilisez HTTP pour vos URL de rappel, elles cesseront de fonctionner si vous utilisez ce type de cookie pour lier le state/le de la demande d’autorisation. Vous devrez donc soit utiliser HTTPS, soit définir SameSite=lax