Discord et authentification avec myDid

myDid
3 min readFeb 16, 2022

Création d’un bot myDid pour authentifier un utilisateur Discord et lui donner les droits d’accès appropriés via un wallet mobile DID.

Les portefeuilles d’identité décentralisée et la possession d’attestations vérifiables sont des outils intéressants pour la gestion de communautés d’utilisateurs sur différentes plateformes, mais il faut proposer des services et passerelles pour profiter de fonctionnalités d’authentification simples.

Ces authentifications peuvent utiliser des attestations fournies lors d’une procédure de KYC traditionnelle ou une attestation spéciale donnée précisément pour contrôler l’accès. Ces détails ne seront pas abordés ici, focalisons-nous sur le cas particulier des utilisateurs de serveur Discord.

Architecture/ Diagramme du bot Discord pour l’authentification via le wallet myDid

Sur Discord, une authentification externe est complexe et comme dans d’autres solutions que nous verrons plus tard, il n’est pas vraiment possible de proposer une solution d’authentification en amont.

Comme pour d’autre bot Discord d’authentification, notre but ici est de laisser un nouvel arrivant sur le Discord avec les droits d’accès réduits à un canal d’introduction à la nécessité de cette seconde forme d’authentification et de mettre tous les autres canaux du serveur discord en “privé” avec des droits supplémentaires qu’il n’obtiendra qu’après avoir été authentifié.

Le nouvel arrivant n’a qu’un accès limité au canal Welcome

Par défaut, les messages privés sont autorisés et dans la majorité des cas, le nouvel arrivant recevra donc un message privé directement lui indiquant la procédure à suivre : scanner un QR Code avec son application portefeuille myDid. Si l’utilisateur n’accepte pas les messages privés, il est invité à taper une commande dans le canal d’accueil après avoir changé ce paramétrage.

Version simplifiée du message privé envoyé par le bot au nouvel arrivant

Le nouvel arrivant est donc invité à scanner ce QR code avec l’application myDid qui expose sommairement le contexte de cette demande.

Exemple (non finalisé) d’écran de confirmation de consentement

La provenance de la requête peut être vérifiée (le bot Discord possède lui aussi un DID Document) et pour éviter des attaques de type “Rejeu”, le pseudo concerné par la requête fait partie des données signées et affichables.

Note : Nous travaillons aussi à améliorer le contexte de ce consentement en travaillant avec les vérificateurs à la création d’engagements standardisés qui pourraient apparaître sur cet écran. Exemples : “Ce service ne conserve les données que le temps de la vérification” ou “Les données seront stockées chiffrées”, etc.

Une fois ce consentement obtenu, les Attestations Vérifiables sont transmises au serveur d’authentification qui :

  • fait le lien avec la session démarrée (date, challenge, pseudo, etc.)
  • vérifie les Attestations Vérifiables nécessaires
  • vérifie la signature de l’utilisateur
  • demande au bot de changer les droits de l’utilisateur

Le bot informe ensuite dans sa conversation privée avec le nouvel arrivant que celui-ci a bien été vérifié et que ses droits d’accès ont été modifiés.

Message de succès d’authentification

L’utilisateur a maintenant accès aux canaux du serveur qui nécessitaient la vérification.

L’utilisateur vérifié obtient automatiquement l’accès aux autres canaux (ici, le canal “vip-channel”)

Note : En plus d’obtenir l’accès au Discord, il est possible d’envoyer une Attestation Vérifiable à l’utilisateur pour confirmer qu’il est maintenant un utilisateur vérifié du serveur Discord et éventuellement permettre d’autres authentifications à partir de cette nouvelle Attestation.

Au delà du fait d’ouvrir le code de ce bot et de ce Serveur, nous réfléchissons aussi à l’opportunité d’en faire un bot Discord “officiel” plus facilement installable sur des serveurs Discord.

--

--