Skip to main content
Les témoins, qui sont utilisés pour l’authentification et la gestion des sessions, peuvent être sécurisés en définissant des attributs. Auth0 utilise des témoins 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 témoin SameSite dans l’en-tête de réponse HTTP set-cookie afin de limiter le comportement du navigateur. Cela peut empêcher le navigateur d’envoyer la paire key=value du témoin 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 témoin que vous connaissez peut-être : À la réception, le navigateur analyse les en-têtes et met à jour son stockage de témoins en conséquence. Depuis février 2020, Google Chrome v80 a modifié la façon dont il gère les témoins. Auth0 a mis en œuvre les changements suivants dans sa gestion des témoins :
  • Les témoins pour lesquels l’attribut SameSite n’est pas défini seront réglés sur lax
  • Les témoins avec SameSite=none doivent être sécurisés; sinon, ils ne peuvent pas être enregistrés dans le stockage de témoin 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 témoins suivants :
  • auth0 (gère les sessions utilisateur)
  • auth0-mf (gère les renseignements liés à )
  • did (l’identifiant d’un appareil/agent utilisateur)
Pour ces témoins, Auth0 va :
  • Définir l’attribut SameSite sur none, ce qui exige l’utilisation de HTTPS (quel que soit l’environnement)
  • Définir des témoins de secours si un navigateur hérité ne prend pas en charge SameSite lorsqu’il est défini sur None. Ces témoins de secours sont auth0_compat, auth0-mf_compat et did_compat
Le schéma ci-dessous montre ce qui se passe lors d’une nouvelle 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 témoin indiquant que la page a déjà été consultée. La partie grise de l’en-tête set-cookie correspond au témoin réel key=value. La partie rouge correspond aux attributs du témoin que le navigateur stocke dans le stockage de témoin afin de déterminer plus tard s’il doit inclure la paire key+value dans les requêtes.
Attributs de témoin sameSite - flux d’une nouvelle interaction
Le schéma suivant montre ce qui se passe si vous effectuez la même requête dans la même session de navigation. La requête est envoyée au même serveur et, comme les attributs du témoin n’empêchent pas l’envoi du témoin indiquant que la page a déjà été consultée, celui-ci est automatiquement inclus dans la requête sous forme d’en-tête de témoin. Le serveur répondra alors différemment parce qu’il a reçu ce témoin.
Attributs de témoin sameSite - flux de retour du témoin

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 (par 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 dépendez des témoins pour offrir cette fonctionnalité. Des changements au comportement des témoins 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 remarquerez peut-être que les spécifications de Google Chrome et de Microsoft Edge concernant les cas où SameSite n’est pas défini ont changé : la valeur par défaut de SameSite est passée de none à lax. Par exemple, supposons que vous créez une nouvelle interface utilisateur et que vous avez plusieurs services que vous acheminez via une passerelle Auth0. À cette passerelle, vous créez une session par témoin. Si vous faites une requête inter-origine, vous pourriez voir cet avertissement dans la console JavaScript : Un cookie associé à une ressource intersite (URL) a été défini sans l’attribut SameSite. Une future version de Chrome n’enverra les cookies avec des requêtes intersites que s’ils sont définis avec SameSite=None et Secure. Vous pouvez examiner les cookies dans les outils de développement sous Application>Storage>Cookies et voir plus de détails à https://www.chromestatus.com/feature/5088147346030592 et https://www.chromestatus.com/feature/5633521622188032

Mesures à prendre

Pour vous préparer à ce changement, vous devez :
  • Consulter la liste des navigateurs non pris en charge.
  • Configurer votre application pour qu’elle utilise 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)
  • Définir votre témoin comme sécurisé si son attribut SameSite est égal à None. Sinon, il sera rejeté par le navigateur. Si vous utilisez HTTP pour vos URL de rappel, elles cesseront de fonctionner si vous utilisez de tels témoins pour lier le state de la requête d’autorisation/. Vous devez donc soit utiliser HTTPS, soit définir SameSite=lax