4 points par GN⁺ 2024-01-01 | 1 commentaires | Partager sur WhatsApp
  • Lors de la création d’un ID de compte interne de long terme, utiliser une adresse e-mail comme ID permanent simplement parce qu’OIDC la renvoie fait porter à la fois les problèmes de modification et de réutilisation
  • Une adresse e-mail peut changer, même au sein d’une même organisation, comme un nom ou un identifiant de connexion ; elle n’est donc pas assez stable pour servir de valeur de référence d’un compte
  • Même si l’accès au courrier ou le transfert depuis une ancienne adresse subsistent, rien ne garantit que cette adresse continuera à fonctionner pour des usages non liés au mail comme l’authentification OIDC
  • Une adresse e-mail peut être nécessaire pour la récupération de compte, mais si le système d’authentification fournit un identifiant distinct, unique et permanent, c’est cette valeur qu’il faut utiliser comme ID interne
  • Même s’il n’est pas visible par l’utilisateur, l’identifiant interne d’un compte gagne à être un ID sans signification ; c’est plus simple à long terme pour l’exploitation et la sécurité

Pourquoi on est tenté d’utiliser une adresse e-mail comme ID permanent

Une adresse susceptible de changer est un mauvais point de référence

  • Le principal problème est qu’une adresse e-mail peut changer
    • Même au sein d’une même organisation, l’adresse e-mail d’une personne peut être modifiée
    • Elle peut changer pour les mêmes types de raisons que le nom utilisé au quotidien ou l’identifiant de connexion
    • Refuser de modifier ou de réattribuer une adresse e-mail allouée par l’organisation peut, dans bien des contextes, devenir juridiquement intenable tant cela peut être sévère
  • Même si une ancienne adresse e-mail ne disparaît pas totalement, elle reste insuffisante comme identifiant permanent
    • Il peut subsister un accès via l’ancienne adresse ou un transfert
    • Mais cela ne signifie pas que cette ancienne adresse continuera à fonctionner pour des usages non liés au mail, comme l’authentification OIDC
    • Les utilisateurs préfèrent aussi utiliser leur nouvelle adresse actuelle plutôt qu’une ancienne adresse potentiellement peu pratique

Réutilisation et e-mail de récupération doivent être traités séparément

  • Autre problème, plus limité : rien ne garantit qu’une organisation ne réutilisera pas une adresse e-mail
    • En règle générale, elle peut être réutilisée
    • Les adresses très convoitées, en particulier, peuvent être réutilisées ou réattribuées à titre exceptionnel parce qu’une personne influente les souhaite
  • Si la récupération de compte doit passer par l’adresse e-mail enregistrée, il peut être nécessaire de la stocker
    • Mais s’il existe, comme avec OIDC, un identifiant interne théoriquement unique et permanent, c’est cet ID interne qu’il faut utiliser
  • Même si l’on doit conserver une adresse e-mail pour la récupération de compte, l’identifiant interne du compte devrait être un ID sans signification
    • Même si cette valeur n’est pas exposée à l’utilisateur, l’exploitation en est plus simple sur le long terme
  • Donner trop de sens à une adresse e-mail peut aussi masquer des problèmes de sécurité

1 commentaires

 
GN⁺ 2024-01-01
Commentaires sur Hacker News
  • Il n’existe pas de bon identifiant d’identité
    Les adresses e-mail changent, et on peut aussi perdre l’accès à ses anciennes adresses
    Beaucoup de gens n’aiment pas non plus les noms d’utilisateur, donc plutôt qu’un nom unique mais dénué de sens comme user53267, ils préfèrent choisir un nom non unique
    On perd aussi ses appareils, donc stocker un UUID secret dans un cookie ou se reposer uniquement sur les passkeys de l’appareil ne résout pas le problème
    Il n’existe pas de solution idéale, il faut combiner plusieurs approches. Pour certaines personnes, l’e-mail reste stable longtemps et fait un bon identifiant d’identité, mais pour d’autres, c’est le nom d’utilisateur qui est stable et préférable. En revanche, je n’ai presque jamais vu quelqu’un garder le même appareil principal pendant plusieurs années, encore moins pendant des décennies, donc l’identification basée sur l’appareil ne semble probablement pas très viable
    Cela se voit particulièrement souvent avec les e-mails professionnels du type first.last@company.com. Beaucoup de logiciels fournis par des vendors utilisent Sign in with Google et enregistrent cette adresse e-mail comme identifiant dans l’application du vendor
    Les noms changent, et les adresses e-mail changent aussi, à cause du mariage, du divorce, d’une transition, d’un changement de contexte culturel ou du choix d’un nouveau nom
    Peut-être que des systèmes comme OIDC ont besoin de nouvelles extensions, par exemple une API standard pour changer de nom d’utilisateur et une API standard pour changer d’adresse e-mail

    • La plus ancienne adresse e-mail à laquelle j’ai encore accès a plus de 20 ans. Je ne l’utilise plus aujourd’hui, mais elle a duré plus longtemps que n’importe lequel de mes numéros de téléphone ou de mes adresses physiques
      En dehors des identifiants publics comme une pièce d’identité officielle ou un numéro de sécurité sociale, il semble difficile de faire mieux
    • Les gens devraient aussi avoir le droit de tout perdre et de recommencer une nouvelle vie. Il y a encore quelques décennies, c’était réellement possible
    • OIDC traite déjà ce problème en exigeant que le claim sub soit unique et ne soit pas réattribué : https://openid.net/specs/openid-connect-core-1_0.html#IDToke...
      Bien sûr, cela signifie qu’il ne faut pas mettre une adresse e-mail dans le sub d’un ID token
    • L’un de mes cas “préférés” de changement d’e-mail est un problème créé de toutes pièces, comme le changement de suffixe pour les contractuels
      J’ai connu une entreprise où il fallait créer un compte entièrement nouveau lors d’un passage en interne, et comme il n’y avait pas de système d’autorisations simple et unifié, il a fallu environ trois semaines après la transition pour récupérer l’accès aux systèmes auxquels on avait encore accès la veille
      Le plus amusant, c’est que cette entreprise fait beaucoup de business en fournissant à ses clients des systèmes de comptes complexes, et dispose même d’un système d’identité externe qui gère ce genre de problème facilement. En revanche, il n’est pas appliqué aux employés internes qui maintiennent justement ce système d’identité externe
    • J’aimais bien l’ancien fonctionnement de Discord, où l’e-mail et le nom affiché étaient séparés
      Tout le monde avait un numéro, donc ce numéro n’avait pas vraiment d’importance. J’ai été un peu déçu quand ils sont passés à un ID de compte unique, et je me demande toujours pourquoi ils ont changé
  • Quelle est la meilleure approche pour gérer ce problème en tant qu’individu ?
    Gmail peut se verrouiller soudainement ou faire bannir un compte à cause d’algorithmes d’IA, et s’il y a un problème, il n’y a aucun recours
    Yahoo m’a récemment demandé, à la connexion, de confirmer mon identité via une adresse e-mail inactive à laquelle je n’avais plus accès depuis 15 ans, ce qui m’a fait perdre l’accès. Heureusement, j’avais encore accès au client mail, ce qui m’a permis de migrer les comptes importants
    Yahoo/AOL/Tutanota/Protonmail/et beaucoup d’autres suppriment automatiquement les comptes si l’on ne s’y connecte pas assez souvent. Protonmail ne le fait pas encore, mais ses conditions l’autorisent
    Même l’auto-hébergement pose problème, car il faut de toute façon une adresse e-mail pour toute l’infrastructure. Si on perd l’accès à cette adresse, on peut rater les alertes de paiement et même perdre le compte d’hébergement. J’ai failli perdre un domaine parce que les alertes de paiement arrivaient sur une adresse que je consultais rarement, faute de support IMAP. À moins d’être un administrateur système professionnel avec assez de temps pour la maintenance, le risque de piratage est aussi plus élevé
    Les notifications Duo Push deviennent inutiles si le téléphone tombe en panne, et la vérification par SMS a ses propres problèmes : téléphone cassé, perte d’accès au forfait, fuite de codes par des employés internes, etc.
    J’ai fini par décider d’utiliser mon adresse Gmail universitaire. On m’a promis que les alumni pouvaient la conserver, et si quelque chose tourne mal — probablement une perte du second facteur à cause d’un téléphone perdu — il existe au moins un bon centre d’assistance pour les anciens élèves
    Il faut absolument un service d’assistance humain quelque part. Malgré tout, je ne suis pas sûr que ce soit la meilleure solution, et je me demande s’il reste encore un risque côté Google

    • La meilleure solution oubliée ici, c’est d’utiliser son propre domaine avec un e-mail hébergé chez Gmail ou un service similaire
      Comme tu le dis, si le compte est bloqué, il “suffit” de changer de fournisseur, et au pire on ne perd que quelques heures d’e-mails
    • Et iCloud ? En théorie, un bannissement de compte est possible, mais au moins Apple donne généralement l’impression qu’il existe un recours et qu’on peut parler à un humain
  • Je suis d’accord pour dire que l’e-mail n’est pas un bon identifiant permanent. En revanche, utiliser le numéro de téléphone comme élément d’identification, c’est encore pire
    J’utilise le même e-mail sur mon propre domaine depuis presque 20 ans, mais sur la même période, j’ai changé de numéro de téléphone une bonne douzaine de fois. Je tombe souvent sur des sites où la validation en deux étapes est restée activée sur un ancien numéro, ou bien j’ai tout simplement oublié que j’avais enregistré cet ancien numéro sur ce site au départ
    Même en vivant à l’étranger, je continue de garder mon numéro américain chez AT&T en payant environ 150 dollars de taxes par mois, à cause des sites qui envoient encore les codes de connexion sur ce numéro, et parce que si je l’abandonnais, je risquerais de perdre l’accès à des services importants dont j’aurais oublié de mettre à jour le numéro, ou qui exigent un numéro américain

    • En transférant le numéro vers un fournisseur VoIP comme DIDww, tu peux le conserver pour 2,50 $ par mois et, si tu veux, faire envoyer les SMS reçus vers ta boîte de réception
      Et si plus tard tu veux réutiliser ce numéro sur un compte mobile, tu peux simplement le retransférer vers l’opérateur de ton choix
    • Il n’y a pas besoin de payer autant pour garder un numéro américain à l’étranger
      Quand c’est possible, passe la double authentification sur une appli comme Google Authenticator, et transfère le numéro vers Google Voice pour recevoir gratuitement les SMS envoyés à ton ancien numéro
      Et si tu ne veux pas du tout dépendre de Google, il existe plein d’autres applis d’authentification basées sur le temps, et tu peux aussi utiliser www.tossabledigits.com pour les SMS
    • Je ne comprends pas pourquoi tu paies autant. En transférant le numéro chez un fournisseur VoIP, ça coûte quelques dollars par mois
      Même pour un forfait mobile classique, c’est excessif. Je paie moins de 100 dollars par mois pour deux lignes
    • Je suis d’accord avec l’idée d’essayer la VoIP
      Quand j’ai déménagé il y a longtemps, mon numéro de téléphone de bureau personnel n’était pas autorisé dans la nouvelle zone, mais j’ai eu la chance de pouvoir le transférer vers un compte VoIP
      À l’époque, Internet était lent, donc j’ai utilisé pendant un temps un adaptateur téléphonique Ethernet, puis ensuite j’ai gardé ce numéro uniquement pour la réception. Les appels vocaux et les fax sont tous transférés par e-mail
      Ça fonctionne très bien depuis plus de 20 ans. Comme je n’ai aucun appareil à y connecter, le coût annuel reste assez bas
      Je pourrais peut-être un jour y brancher un téléphone et profiter d’un Internet moderne, mais j’aime bien le fonctionnement actuel et le fait de ne pas être attaché à un lieu précis
    • Même si tu changes d’opérateur, tu peux garder ton numéro de téléphone. Pas ton adresse e-mail
  • Mon expérience est la même. Personnellement, je pense qu’un UUID aléatoire est ce qu’il y a de mieux
    Même le hash de l’adresse e-mail initiale de l’utilisateur n’est pas idéal. Le salage seul peut ne pas suffire, parce que d’autres pourraient supposer qu’il est sûr de hasher n’importe quelle adresse e-mail en entrée

    • Est-ce qu’il existe vraiment des cas où quelque chose comme une clé naturelle, comme on l’apprend en cours de bases de données, est raisonnable ?
      En pratique, j’utilise toujours un entier auto-incrémenté ou une chaîne aléatoire/UUID comme clé primaire
    • La seule façon de garantir qu’un identifiant soit « permanent », c’est de choisir quelque chose que les gens n’auront absolument aucune raison de modifier
      Il ne faut que cela n’ait aucun lien avec des attributs du monde réel auxquels les gens tiennent, comme un numéro de téléphone, une adresse e-mail, un identifiant national de type numéro de sécurité sociale, un nom ou une empreinte digitale
      Une chaîne aléatoire correspond parfaitement à ce critère. Un entier séquentiel convient aussi, mais il est facile à deviner, donc des mesures de sécurité supplémentaires peuvent être nécessaires
    • Je préfère un UID séquentiel à un UUID, mais le fond reste le même
  • Et si on prenait en charge des adresses e-mail à clé publique ? Par exemple, traiter quelque chose comme . et . comme étant équivalents
    On pourrait s’inscrire avec l’une, puis se connecter ou récupérer son compte avec l’autre. Si Google me bannit ou si Hotmail disparaît, je pourrais aller chez un autre service et m’authentifier avec ma clé privée pour rouvrir le même compte
    Il faudrait évidemment une procédure d’alias pour avoir des noms pratiques, mais j’imagine qu’un client mail devrait mapper ce type d’adresses ou au moins les suivre avec la clé publique
    Cela pourrait aussi être un moyen d’introduire l’e-mail chiffré de bout en bout. Ça n’a presque jamais réellement décollé à grande échelle
    Pour que ça fonctionne vraiment, il faudrait le support des grands acteurs, mais à première vue l’idée paraît assez solide. Le seul problème, c’est qu’aucun ne le prend encore en charge

    • Je suis surpris que la Decentralized Identity Foundation n’ait pas encore été mentionnée dans ce fil : https://identity.foundation/
      De nouvelles façons de s’identifier et de communiquer sur le web sont en train d’émerger, dans lesquelles on possède soi-même son identité, sans dépendre d’un fournisseur ni d’une autorité centrale
  • Mon ancien fournisseur d’énergie, British Gas (détenu par Centrica), n’autorisait pas l’utilisation d’une même adresse e-mail pour plus d’une adresse physique réelle
    Après un déménagement, quand j’ai essayé de « configurer » mon compte en ligne, j’obtenais une erreur HTTP 500 chaque fois que je voulais consulter les détails de l’adresse actuelle
    Au téléphone, on m’a expliqué que même si le compte énergie de l’ancienne adresse était fermé, on ne pouvait pas « utiliser la même adresse e-mail pour plusieurs adresses postales »

    • Tu peux utiliser l’astuce +whatever. Avec Gmail, l’astuce du point . marche aussi
    • C’est une mauvaise façon de faire, mais si tu utilises ton propre domaine pour l’e-mail, ce n’est pas vraiment un problème
  • Je suis justement en train de modifier notre système pour autoriser plusieurs adresses e-mail liées à un même compte
    L’une des principales raisons, c’est que nous proposons des réductions étudiantes. Le moyen le plus simple d’appliquer la réduction à un compte, c’est de vérifier si l’e-mail appartient à un établissement d’enseignement, comme .edu ou .ac.uk
    Mais la plupart des gens n’ont visiblement pas envie de s’inscrire avec cette adresse-là. En autorisant plusieurs e-mails, on peut avoir les avantages des deux côtés
    J’aurais aimé qu’on fasse ça comme ça dès le départ

    • Aux États-Unis, il faut savoir que beaucoup de gens peuvent obtenir une adresse de redirection pour anciens élèves en .edu même après avoir fini l’université
      J’en ai une assez sympa. Je l’ai demandée tôt, donc c’est simplement une adresse avec mon nom
      Cela dit, je ne l’utilise pas beaucoup. Au début, la redirection était parfois peu fiable, mais j’imagine que ça s’est amélioré depuis
      En pratique, mon adresse Gmail est déjà stable depuis presque des décennies et ne semble pas près de changer
      Quoi qu’il en soit, je ne donne mon adresse edu qu’à très peu de monde
  • Ce n’est pas la solution la plus élégante, mais il existe une solution côté client
    Si tu paies toi-même ton domaine et le maintiens, tu peux contrôler à 100 % tes alias e-mail
    Même si ton fournisseur actuel, comme Google, disparaît, tu peux héberger toi-même le mail pour récupérer tes comptes et conserver la propriété des alias

    • Et si le domaine expire ?
  • Pour moi, c’est un problème de backend. L’ID visible par l’utilisateur peut être une adresse e-mail, mais la clé primaire dans les données du système ne doit pas être l’adresse e-mail
    Il y a encore des endroits qui font ça ? Ne pas utiliser quelque chose comme l’e-mail comme identifiant et prévoir une table de correspondance vers un véritable ID unique (UUID ou valeur auto-incrémentée basée sur une séquence), c’est vraiment la base de la conception de base de données
    L’article ne fait pas bien cette distinction, au point qu’on peut le lire comme si l’utilisateur devait être conscient de cette abstraction

    • Exactement. C’est le genre de question d’examen d’un cours de base de données niveau lycée, mais étonnamment beaucoup de développeurs adultes ne s’arrêtent pas pour réfléchir à la partie base de données
  • Rien n’est éternel. Il existe à peine quoi que ce soit de stable sur toute la durée d’une vie humaine
    Même des marqueurs biométriques facilement scannables ne sont pas de manière fiable uniques dans une population suffisamment grande
    Les adresses e-mail sont choisies pour ce type d’usage parce qu’elles restent assez longtemps stables et uniques
    Les numéros de téléphone sont eux aussi devenus des identifiants persistants plus qu’avant, et ressemblent désormais aux e-mails comme identifiants utiles
    On perd souvent à la fois son adresse e-mail et son numéro de téléphone, et il arrive fréquemment de perdre les deux en même temps
    La solution, c’est une adresse e-mail de secours
    Je trouve que GitHub gère plutôt bien l’identité, mais ils utilisent encore des mots de passe. Les mots de passe, c’est mauvais