Je viens de mettre en œuvre SIWE pour un projet et je voulais partager ce que j'ai appris, car le processus est en réalité assez simple une fois que vous comprenez le concept de base.



Voici donc le principe de Sign-In with Ethereum - c'est essentiellement une façon de vérifier que vous possédez réellement une adresse de portefeuille. Lorsque vous connectez votre portefeuille à une dapp, le frontend sait qui vous êtes, mais le backend n'a aucun moyen de vérifier que vous n'êtes pas simplement quelqu'un prétendant être cette adresse. SIWE résout cela en vous faisant signer un message, ce qui prouve la propriété. C'est similaire à la façon dont fonctionnent les transactions - vous signez quelque chose avec votre clé privée.

Le processus se décompose en trois étapes principales : connecter le portefeuille, signer un message, puis obtenir un jeton d'identité. Un flux assez clair une fois que ça clique.

Maintenant, toutes les dapps n'ont pas besoin de SIWE. Si vous construisez quelque chose comme un explorateur de blocs où les utilisateurs ne font que consulter des données publiques, ce n'est pas vraiment nécessaire. Mais si votre dapp a des comptes utilisateur ou gère des données sensibles, SIWE devient assez précieux.

J'ai fini par utiliser Next.js pour l'implémentation full-stack puisque vous pouvez gérer à la fois le frontend et le backend dans un seul projet. J'ai commencé avec des packages npm comme Ant Design Web3 et Wagmi - ils gèrent une grande partie de la logistique. Vous pouvez installer les dépendances principales via npm avec une seule commande, ce qui fait gagner énormément de temps de configuration.

Le flux de signature consiste à obtenir d'abord un nonce depuis votre backend. Ce nonce est unique par adresse et empêche les attaques par rejeu. Ensuite, vous construisez un message qui inclut le nonce, le domaine et l'ID de la chaîne, le signez avec votre portefeuille, puis tout renvoyez au backend pour vérification. Si la signature est valide, vous recevez un jeton JWT pour les requêtes suivantes.

Une chose que j'ai remarquée - utiliser des nœuds RPC par défaut rend la vérification longue, environ 30 secondes, ce qui est brutal pour l'expérience utilisateur. Passer à un service de nœud dédié (j'ai utilisé ZAN) a réduit ce délai de façon spectaculaire. Ça vaut vraiment le coup d'optimiser si vous allez en production.

La note de sécurité issue de la documentation est importante : le code de démonstration qu'ils fournissent est éducatif. En production, vous avez besoin d'une gestion correcte des JWT, de limitation de taux, et d'autres protections. Ne copiez pas simplement le code d'exemple en production.

Si vous construisez une dapp qui nécessite une authentification utilisateur, SIWE est désormais pratiquement la norme. L'écosystème npm a suffisamment mûri pour que l'intégration soit beaucoup moins douloureuse qu'avant.
ETH0,4%
Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • Commentaire
  • Reposter
  • Partager
Commentaire
Ajouter un commentaire
Ajouter un commentaire
Aucun commentaire
  • Épingler