Comprendre et Utiliser le Protocole OAuth 2.0

14 min de lecture

1. Introduction au Protocole OAuth 2.0

1.1 Qu'est-ce que OAuth 2.0 ?

OAuth 2.0 est un protocole ouvert qui autorise l'accès sécurisé à des ressources protégées. Le protocole OAuth standardise l'échange de tokens d'accès contre des informations d'identification telles que les noms d'utilisateur et les mots de passe. Avec OAuth 2.0, un client (généralement une application) peut accéder aux ressources d'un serveur en lieu et place d'un utilisateur final. L'idée est de permettre un accès sécurisé sans partager les détails d'identification propres à l'utilisateur. Pour plus d'informations sur le protocole OAuth 2.0, vous pouvez consulter le RFC6750.

1.2 Histoire et évolution du protocole OAuth

Initié en 2005 par Blaine Cook, Chris Messina et Larry Halff, OAuth a été développé pour résoudre les problèmes de délégation d'accès dans le web 2.0. OAuth 1.0, publié en décembre 2007, avait des problèmes de sécurité qui ont été résolus avec la sortie de sa version corrigée, OAuth 1.0a, en juin 2009. Toutefois, le protocole restait complexe à mettre en œuvre et l'arrivée d'OAuth 2.0, en octobre 2012, apportait une simplicité relative tant attendue.

À noter: OAuth 2.0 a été critiqué pour son manque de sécurisation directe des communications. C'est pourquoi, bien que basé sur OAuth 2.0, OpenID Connect introduit une authentification des utilisateurs pour obtenir une couche additionnelle de sécurité.

1.3 Avantages de OAuth 2.0

OAuth 2.0 présente plusieurs avantages qui le rendent largement utilisé, notamment:

  • Il permet de protéger les informations d'identification des utilisateurs en n'exigeant pas que les applications stockent des noms d'utilisateur et des mots de passe.

  • Il standardise l'échange de tokens d'accès, ce qui simplifie le processus d'autorisation.

  • Il offre de la flexibilité avec plusieurs types de grants (flux d'autorisation) adaptés à différents scenarios d'usage.

  • Il facilite l'intégration avec les fournisseurs d'identité tiers, ce qui élimine le besoin pour les utilisateurs de créer de nouveaux comptes pour chaque service en ligne.

  • Il est largement supporté par de nombreuses plateformes.

En conclusion, OAuth 2.0 est devenu la référence dans l'échange sécurisé d'informations entre différentes parties sur Internet. Il est largement utilisé dans une variété de contextes, y inclus l'autorisation de l'accès aux APIs, l'identité numérique et l'intégration avec les réseaux sociaux.

2. Comment fonctionne OAuth 2.0 ?

2.1 Principes de base de OAuth 2.0

OAuth 2.0 est un protocole d'autorisation qui permet à un utilisateur de donner accès à une application tierce à ses informations sur une plateforme sans avoir à partager son nom d'utilisateur et son mot de passe. Il se base sur un échange de tokens (jetons) qui sont générés par le serveur d'autorisation.

Le système fonctionne grâce à trois acteurs majeurs :

  • Le client : Il s'agit de l'application qui souhaite utiliser les données de l'utilisateur.
  • Le fournisseur : La plateforme qui détient les données de l'utilisateur.
  • L'utilisateur : Il est le propriétaire des données.

2.2 Processus d'autorisation OAuth 2.0

L'utilisateur doit d'abord demander un accès à l'application. L'application redirige alors l'utilisateur vers le fournisseur. L'utilisateur se connecte auprès du fournisseur et autorise l'application à accéder à ses informations. Le fournisseur génère un code d'autorisation et renvoie l'utilisateur vers l'application avec ce code.

L'application échange ensuite ce code d'autorisation contre un token d'accès auprès du fournisseur. Ce token d'accès est enfin utilisé par l'application pour pouvoir accéder aux informations de l'utilisateur.

2.3 Les Tokens d'accès

Le Token d'accès est une chaîne de caractères générée par le fournisseur lors de l'autorisation. Il est unique pour chaque utilisateur et pour chaque application. C'est grâce à ce token que l'application est en mesure d'accéder aux ressources de l'utilisateur.

Il est généralement valide pour une durée limitée et peut être révoqué par l'utilisateur à n'importe quel moment.

2.4 Les types de grant

OAuth 2.0 définit quatre types principaux de grant :

  • Authorization Code : Ce type est le plus couramment utilisé. Il est conçu pour les applications capables de garder confidentielles les informations d'authentification du client.
  • Implicit : Ce type convient à l'autorisation de clients qui ne peuvent pas stocker les informations du client en toute confidentialité, comme les applications JavaScript.
  • Resource Owner Password Credentials : Dans ce mode, l'utilisateur partage ses identifiants directement auprès de l'application.
  • Client Credentials : Ce type est idéal lorsque l'application souhaite accéder à ses propres ressources.

Un bon exemple d'utilisation d'OAuth 2.0 est lorsqu'une application souhaite accéder à l'API restreinte d'une plateforme comme Google ou Facebook.

3. OAuth 2.0 et la sécurité

3.1 Qu'est-ce que la sécurité OAuth 2.0 ?

OAuth 2.0 est un protocole qui offre un cadre sécurisé pour les interactions entre les applications, tant sur le web que sur les plateformes mobiles. Il est fondé sur le principe du consentement obtenus de l'utilisateur pour partager ses données avec une application tierce, en garantissant que ce dernier ne partage jamais directement son mot de passe avec l'application.

La sécurité dans OAuth 2.0 est basée sur la création de tokens d'accès. Ces tokens représentent l'autorisation donnée à une application de faire quelque chose en particulier, ou d'accéder à une ressource spécifique. Ils ont une durée de vie limitée et peuvent être révoqués à tout moment.

3.2 Meilleures pratiques de sécurité OAuth 2.0

Dans le cadre de la mise en œuvre d'OAuth 2.0, il y a certaines meilleures pratiques à suivre pour assurer la sécurité de l'application et des utilisateurs :

  • Utilisation de HTTPS : OAuth 2.0 doit toujours être mis en œuvre avec HTTPS pour éviter que les tokens d'accès soient interceptés pendant la transmission.

  • Stockage sécurisé des tokens : Les tokens d'accès obtenus ne doivent pas être stockés en clair. Ils peuvent être stockés en utilisant des moyens sécurisés, comme par exemple la méthode secure flag pour les cookies.

  • Minimiser la portée du token : Lors de la demande d'un token, demandez uniquement les permissions nécessaires à votre application et non celles qui pourraient constituer une menace en cas d'exploitation malveillante.

3.3 Problèmes de sécurité courants et comment les éviter

Certaines des attaques les plus courantes contre OAuth 2.0 comprennent le vol de token, l'injection de token, l'usurpation d'identité de l'application et les attaques de l'homme du milieu (MITM). Voici comment les éviter :

  • Le vol de token : Cette attaque peut survenir si les tokens d'accès sont transmis en clair sur un réseau ou stockés en clair sur un dispositif. Pour prévenir cela, on peut utiliser la méthode secure flag mentionnée plus haut. De plus, l'utilisation de HTTPS pour toutes les transactions peut aider à atténuer ce risque.

  • Injection de token : Cette attaque consiste à insérer un token malveillant dans le flux de données d'une application. Pour y remédier, il faut toujours vérifier l'intégrité des tokens reçus avant de les accepter.

  • Usurpation d'identité de l'application : Cette attaque se produit lorsque les attaquants réussissent à convaincre une victime qu'ils sont une application légitime. Pour prévenir cela, il faut s'assurer que l'application est enregistrée auprès du fournisseur OAuth 2.0 et que la redirection URI est bien sécurisée.

  • Attaques de l'homme du milieu (MITM) : Ces attaques peuvent être atténuées en utilisant des communications sécurisées, comme le SSL/TLS.

Note: Rappelez-vous, une bonne sécurité est le résultat d'une multitude de pratiques de sécurité mises en œuvre conjointement. Il est donc primordial de mettre en place plusieurs mesures de sécurité pour une protection optimale contre les différentes menaces potentielles.

4. Utilisation de OAuth 2.0 pour l'autorisation d'API

4.1 Pourquoi utiliser OAuth 2.0 pour sécuriser une API ?

OAuth 2.0 est devenu le choix préféré pour sécuriser les API en raison de sa facilité d'utilisation et de sa flexibilité. Il offre plusieurs avantages:

  • Interoperabilité: OAuth 2.0 est un standard ouvert et est adopté par de nombreuses plateformes majeures comme Google, Facebook et Twitter. Cela le rend interopérable avec une multitude de services.
  • Sécurité renforcée: OAuth 2.0 utilise des jetons d'accès qui peuvent être révoqués à tout moment, offrant un contrôle accru de la sécurité.
  • Accès contrôlé: Avec OAuth 2.0, le client n'a pas besoin de stocker ses informations de connexion. Au lieu de cela, il fait une demande d'accès qui peut être limitée à certaines ressources et/ou durées.

4.2 Comment autoriser une API en utilisant OAuth 2.0

Autoriser une API en utilisant OAuth 2.0 nécessite plusieurs étapes:

  1. Le consommateur de l'API demande un jeton d'accès auprès du serveur d'autorisation en fournissant ses informations d'identification.
  2. Si valide, le serveur d'autorisation envoie un jeton d'accès qui peut être utilisé pour accéder à l'API protégée.
  3. Le consommateur de l'API inclut ce jeton d'accès dans ses demandes à l'API.
  4. Le serveur d'API valide le jeton d'accès avant de traiter la demande.

4.3 Exemples d'utilisation de OAuth 2.0 pour des API

Voici quelques exemples concrets de l'utilisation de OAuth 2.0 pour sécuriser des API:

  • Gmail API: Google utilise OAuth 2.0 pour ses API, y compris celle de Gmail. Les applications tierces peuvent utiliser OAuth 2.0 pour accéder de manière sécurisée aux données de Gmail des utilisateurs, sous réserve de leur consentement.

  • API Facebook: Facebook utilise également OAuth 2.0 pour protéger ses API. Cela permet aux développeurs de créer des applications qui peuvent accéder aux données des utilisateurs de manière sécurisée.

Il est important de noter que même si OAuth 2.0 offre une flexibilité et une sécurité accrues, sa mise en œuvre doit être réalisée avec soin pour éviter d'éventuelles failles de sécurité. Un des sites référence pour la spécification OAuth 2.0 est oauth.net.

5. OAuth 2.0 et l'identité numérique

5.1 L'importance de l'identité numérique

L'identité numérique est au cœur de toutes les interactions en ligne, qu'il s'agisse de médias sociaux, de commerce électronique ou de services bancaires en ligne. Note: Une identité numérique sécurisée stimule l'inclusion financière et économique pour les individus et les entreprises en éliminant les barrières de l'accès à l'internet.

OAuth 2.0 joue un rôle vital en validant l'identité numérique et en permettant aux utilisateurs d'interagir en ligne en toute sécurité.

5.2 Comment OAuth 2.0 gère l'identité numérique

OAuth 2.0 se charge de la délégation d'autorisation, mais pas directement de la gestion de l'identité numérique. C'est là que le protocole OpenID Connect intervient.

1def oauth2_authentication():
2 # Implémentation de base de l'authentification OAuth 2.0
3 print("Début de l'authentification ")
4
5 # Étape initiale : redirection vers le fournisseur d'identité
6 redirect_to_identity_provider()
7
8 # Réponse du fournisseur d'identité
9 response = identity_provider_response()
10
11 if response["accepted"]:
12 print("L'identité a été vérifiée avec succès")
13 else:
14 print("Échec de la vérification de l'identité")

Remarque: Ce code démontre de manière simplifiée comment OAuth 2.0 peut être utilisé pour l'authentification. Dans une application réelle, ce processus impliquerait des échanges sécurisés de token avec le fournisseur d'identité.

OpenID Connect, basé sur OAuth 2.0, fournit une couche d'identité par-dessus le protocole, ce qui permet aux utilisateurs d'être authentifiés de manière fiable. Ce protocole fournit à l'application des informations sur l'utilisateur, appelées "claims". Ces claims sont présentés comme un jeton d'ID JSON Web Token (JWT), ce qui permet à l'application de vérifier l'identité de l'utilisateur et d'obtenir des informations de base sur ce dernier.

En fin de compte, OAuth 2.0, lorsqu'il est utilisé en combinaison avec OpenID Connect, permet de gérer efficacement l'identité numérique. Il respecte à la fois les aspects d'autorisation déléguée et d'authentification, créant une base robuste pour la sécurisation des interactions en ligne.

6. OAuth 2.0 et le concept d'OpenID Connect

6.1 Qu'est-ce qu'OpenID Connect ?

OpenID Connect (OIDC) est une couche d'identité bâtie sur le protocole OAuth 2.0 qui permet aux clients de vérifier l'identité de l'utilisateur en se basant sur l'authentification réalisée par un serveur d'autorisation. OIDC comprend également des fonctionnalités pour obtenir des informations de profil utilisateur de base. Pour faire simple, si OAuth 2.0 est pour l'autorisation, OpenID Connect est pour l'authentification.

Voici une comparaison entre OAuth 2.0 et OpenID Connect :

OAuth 2.0OpenID Connect
Se focalise sur l'autorisationPermet l'authentification
Obtient des jetons d'accès pour accéder aux APIsObtient des informations d'identité de l'utilisateur
Ne fournit pas d'information sur l'utilisateurFournit des informations sur l'utilisateur via un jeton d'ID

Note : Le protocole OpenID Connect n'est pas à confondre avec OpenID qui est une version plus ancienne et moins évoluée.

6.2 Comment OAuth 2.0 et OpenID Connect travaillent ensemble

OAuth 2.0 et OpenID Connect travaillent main dans la main pour fournir à la fois l'autorisation et l'authentification aux applications. Pour faire simple, OAuth 2.0 détermine ce à quoi une application a accès, tandis que OpenID Connect détermine qui est l'utilisateur.

Voici un exemple simple d'un flux d'authentification avec OAuth 2.0 et OpenID Connect :

  1. L'utilisateur accède à une application et est redirigé vers un serveur d'authentification.
  2. L'utilisateur s'authentifie avec succès.
  3. Le serveur d'authentification renvoie des informations sur l'identité de l'utilisateur au client via un jeton d'ID.
  4. En parallèle, OAuth 2.0 est utilisé pour obtenir un jeton d'accès pour accéder aux API pour l'application.

Important : La sécurité est un aspect crucial lors de l'utilisation d'OAuth 2.0 et OpenID Connect. Assurez-vous d'utiliser des protocoles sécurisés et des pratiques de codage sécurisées lors de l'implémentation.

Pour en savoir plus sur l'implémentation d'OAuth 2.0 et d'OpenID Connect, je vous recommande ce guidage par l'exemple de Okta.

En résumé, OpenID Connect offre des fonctionnalités clés pour l'authentification des utilisateurs qui enrichissent la flexibilité d'OAuth 2.0. En combinant les deux, les développeurs peuvent garantir à la fois l'authentification et l'autorisation de manière sûre et efficace dans leurs applications.

7. Comparaison entre OAuth2.0 et d'autres protocoles

7.1 Différence entre OAuth2.0 et OAuth 1.0

OAuth1.0 était le premier protocole de ce type. Il a été largement utilisé et apprécié pour sa robustesse en matière de sécurité, notamment grâce à l'utilisation de signatures cryptographiques pour authentifier chaque requête. Cependant, OAuth1.0 était également perçu comme complexe et difficile à mettre en œuvre.

Au contraire, OAuth2.0 est plus simple et flexible. Il n'utilise plus les signatures cryptographiques d'OAuth 1.0, il repose sur l'utilisation de tokens. Cela le rend moins sûr mais plus facile à mettre en œuvre.

OAuth 1.0OAuth 2.0
SécuritéPlus sûrMoins sûr
ComplexitéPlus complexe à mettre en œuvrePlus facile à mettre en œuvre
{: .table .table-striped}

7.2 OAuth 2.0 vs SAML

SAML (Security Assertion Markup Language) est un autre protocole d'autorisation souvent utilisé pour le Single Sign-On (SSO). Il est basé sur XML et est plus approprié pour les échanges entre entreprises, tandis que OAuth2.0 est davantage utilisé pour l'autorisation API et l'accès mobile.

OAuth 2.0SAML
Format de donnéesJsonXML
Usage typiqueAutorisation API et accès mobileSingle Sign-On
{: .table .table-striped}

7.3 OAuth 2.0 vs JWT

JWT (Json Web Token) n'est pas un protocole d'autorisation en soi, mais un format de jeton souvent utilisé en combinaison avec OAuth2.0. JWT peut contenir des informations sur l'utilisateur, ce qui permet aux applications de gagner du temps et des ressources en évitant les appels API supplémentaires pour récupérer les informations utilisateur après l'authentification.

OAuth2.0, par contre, est un protocole qui définit comment obtenir ces jetons d'autorisation.

Note: Il est important de noter que, bien que ces protocoles soient différents, ils ne sont pas nécessairement en concurrence. Dans de nombreux cas, ils peuvent être utilisés de concert pour fournir une solution d'autorisation robuste et sécurisée. De plus, le choix entre eux dépendra du contexte et des spécificités de chaque application.

8. Mise en œuvre pratique d'OAuth 2.0

8.1 Étapes pour mettre en œuvre OAuth 2.0

L'utilisation pratique d'OAuth 2.0 peut se résumer en quelques étapes clés. Voici un aperçu général :

  1. Déterminer les besoins d'autorisation : Évaluez précisément quels sont les besoins d'autorisation de votre application ou service. Cela comprend la compréhension des opérations qui nécessitent une autorisation et de leurs niveaux d'accès respectifs.
  2. Sélectionner le type de flux OAuth approprié : Chaque type de flux d'OAuth 2.0 a ses propres avantages, inconvénients et utilise des cas spécifiques. Par exemple, le flux de code d'autorisation est approprié pour les applications Web de serveur à serveur, tandis que le flux implicite est mieux adapté aux applications sur le navigateur.
  3. Mettre en œuvre le flux OAuth sélectionné : Développer et tester votre implémentation OAuth. Ceci comprend la création de l'interface utilisateur pour demander les autorisations, le traitement de la réponse du serveur d'autorisation et la gestion sécurisée des tokens d'accès.
  4. Mettre en place le rafraîchissement des tokens: Assurez-vous que votre application ou service peut gérer le renouvellement des tokens d'accès lorsque ceux-ci expirent.

Attention: le token ne doit jamais être exposé car il peut être utilisé pour effectuer des actions au nom de l'utilisateur.

8.2 Exemples de mise en œuvre pratique d'OAuth 2.0

Pour mieux comprendre, prenons un exemple d'implémentation pratique de OAuth 2.0. Prenons le cas de GitHub qui propose des services API en utilisant OAuth 2.0.

1import requests
2from getpass import getpass
3
4# Obtenir le client_id et le client_secret lors de la création de l'application OAuth
5client_id = getpass('Enter your client_id: ')
6client_secret = getpass('Enter your client_secret: ')
7
8# URL d'autorisation de GitHub
9url = 'https://github.com/login/oauth/authorize'
10
11# Paramètres de la requête d'autorisation
12params = {
13 'client_id': client_id,
14 'redirect_uri': 'http://localhost',
15 'scope': 'repo user'
16}
17
18# Envoyer la requête d'autorisation
19response = requests.get(url, params=params)
20
21# Afficher l'URL où l'utilisateur doit se connecter pour s'autoriser l'accès
22print(response.url)

Ce code envoie une demande d'autorisation à GitHub pour accéder à la portée 'repo' et 'user' de l'utilisateur.

8.3 Dépannage et maintenance d'une implémentation OAuth 2.0

La mise en œuvre d'OAuth 2.0 peut être un défi technique, et comme tout projet de développement, elle nécessitera du dépannage et de la maintenance pour rester fonctionnelle et sécurisée.

Note : Utilisez toujours des bibliothèques et des SDK maintenus par des sources fiables et maintenez-les à jour pour profiter des dernières corrections de sécurité et des améliorations de stabilité.

Une compréhension claire du protocole d'OAuth 2.0, ainsi que de ses différentes extensions, est cruciale pour maintenir votre implémentation sécurisée et efficace au fil du temps.

9. Prévisions pour le futur de OAuth 2.0

9.1 Tendances actuelles de OAuth 2.0

De nombreuses entreprises et organisations reconnaissent OAuth 2.0 comme un cadre d'autorisation standard pour garantir une sécurité solide pour les API. On observe une augmentation de l'adoption de OAuth 2.0 par de nombreux fournisseurs d'identité comme Facebook, Google ou GitHub.

OpenID Connect commence aussi à établir sa place comme une solution de choix pour la gestion de l'identité sur internet en utilisant OAuth 2.0 comme protocole de base (source).

Note: OpenID Connect est une couche d'identité construite sur OAuth 2.0, qui permet aux clients de vérifier l'identité de l'utilisateur final basée sur l'authentification effectuée par un serveur d'autorisation.

9.2 Prochaines étapes pour OAuth 2.0

Le protocole n'est pas immuable et continue d'évoluer pour répondre aux nouvelles exigences de sécurité et adapter aux nouvelles technologies. Le groupe de travail OAuth de l'Internet Engineering Task Force travaille constamment sur l'amélioration d'OAuth pour répondre aux nouvelles menaces sécuritaires que l'on peut rencontrer dans un environnement numérique de plus en plus complexe.

L'une des directions importantes dans l'évolution d'OAuth 2.0 est dans la gestion de l'accès aux API. Il y a un mouvement croissant pour utiliser OAuth 2.0 avec des tokens de type Bearer pour sécuriser l'accès aux APIs dans le cloud.

Important: Un token Bearer est un type de token d'accès qui n'a besoin d'aucune information d'authentification supplémentaire pour pouvoir être utilisé par le porteur du token. Cela signifie que toute personne en possession du token peut l'utiliser pour accéder à la ressource associée (source).

Des améliorations récentes ont été apportées pour soutenir l'utilisation de Proof Key for Code Exchange (PKCE), qui est une extension d'OAuth 2.0 pour éviter des attaques de vol de code d'autorisation, en particulier pour les applications clientes natives (source).

Dans un monde où le partage des accès et des données est facilité grâce à l'ouverture des APIs, le rôle des protocoles d'autorisation comme OAuth 2.0 sera toujours au cœur des discussions, en particulier autour de la question critique de la gestion de l'identité numérique.

10. Conclusion

10.1 Résumé des avantages de OAuth 2.0

Le protocole OAuth 2.0 présente de nombreux avantages qui en font un choix de premier ordre pour la sécurisation des API et des applications. Voici un résumé de ces points forts :

  • Flexibilité : OAuth 2.0 est un protocole flexible qui permet un large éventail de cas d'utilisation. En effet, l'approche axée sur les "grants" permet une souplesse remarquable pour répondre à différents scénarios d'authentification et d'autorisation.

  • Sécurité : OAuth 2.0 offre un niveau élevé de sécurité, notamment grâce à l'utilisation de différents types de tokens d'accès (Bearer et MAC). De plus, il offre des moyens solides pour protéger les clés client et les secrets.>

  • Interoperabilité : La simplicité et la généralité du protocole OAuth 2.0 lui assurent une grande interopérabilité. Il est largement utilisé et supporté par une multitude de fournisseurs de services API sur le Web.

  • Standard ouvert : OAuth 2.0 est un standard ouvert, ce qui signifie qu'il est constamment amélioré et maintenu à jour par la communauté, qui ajoute régulièrement de nouvelles extensions pour répondre aux besoins évolutifs de sécurité.

FlexibilitéSécuritéInteropérabilitéStandard ouvert
ForteForteElevéeOui

10.2 Importance de la mise en œuvre correcte d'OAuth 2.0

Comme nous l'avons vu tout au long de cet article, OAuth 2.0 peut être un puissant allié pour garantir la sécurité de vos applications et API. Cependant, sa mise en œuvre requiert une certaine expertise, ainsi qu'une compréhension approfondie de ses principes de base et de ses flux d'autorisation.

Une mise en œuvre incorrecte d'OAuth 2.0 peut en effet conduire à des failles de sécurité et, dans les cas les plus graves, exposer vos applications à des attaques.

Il est donc essentiel de prendre le temps de bien comprendre comment OAuth 2.0 fonctionne, de choisir avec soin le type de grant le plus adapté à vos besoins, et de mettre en place des procédures de sécurité robustes pour protéger vos cleints, vos tokens d'accès et vos données utilisateur.

Nous espérons que cet article vous aura aidé à mieux comprendre le protocole OAuth 2.0 et vous encouragera à l'appliquer correctement dans vos futurs projets. Bonne programmation !

Note: Si vous souhaitez approfondir encore davantage votre compréhension d'OAuth 2.0, nous vous recommandons fortement la lecture de la spécification officielle du protocole. Elle fournit une vision plus détaillée des mécanismes internes d'OAuth 2.0 et de ses nombreux cas d'utilisation.

4.6 (34 notes)

Cet article vous a été utile ? Notez le