Inici de sessió a Web3 Ethereum amb les API de Vottun

L’inici de sessió a Web3 Ethereum permet als usuaris iniciar sessió en un lloc web amb la seva cartera Ethereum. Això és possible mitjançant l’ús de signatures digitals a la cadena de blocs d’Ethereum. En aquest tutorial, us mostrarem com implementar un inici de sessió Web3 Ethereum en un lloc web basat en l’estàndard ERC-4361.

Per a aquest tutorial, farem servir la cartera Metamask i l’ API Vottun Web3.

Requisits previs

Abans de començar a desenvolupar, heu de tenir el següent:

  • Cartera Ethereum (per exemple, Metamask )
  • Biblioteca ” Ethers “.
  • Credencials de l’API Vottun

Els passos necessaris per aconseguir la implementació de l’inici de sessió Web3 són:

  1. Implementeu un botó “Connecta cartera” per connectar una cartera Metamask .
  2. Un cop l’usuari connecti la cartera, feu una trucada API a l’ API Vottun Web3 per obtenir el missatge d’inici de sessió.
  3. Activa la finestra “Sign” a Metamask per tal que l’usuari signi el missatge amb la seva cartera.
  4. Un cop l’usuari hagi signat el missatge, recupereu la signatura i feu una trucada API a l’ API Vottun Web3 per verificar la validesa de la signatura.

Com obtenir les meves credencials

Obtenir credencials és molt fàcil. Tens l’opció d’obtenir una prova de 30 dies a l’ URL https://apis.vottun.tech/trial . Omple el formulari i rebràs un correu electrònic com el següent amb les teves credencials a punt per utilitzar.

A més de les credencials, també rebràs la clau pública d’una cartera que podràs utilitzar en les teves proves (per motius de seguretat, la clau privada sempre es manté als nostres servidors).

Aquest correu electrònic us proporcionarà el testimoni JWT (utilitzat com a autenticació del portador) i l’identificador de l’aplicació, que es passa a una altra capçalera. L’explicació detallada d’aquesta configuració s’explica més endavant.

Trobareu més informació sobre les API a https://developers.vottun.tech .

Aprofundim en la implementació de cada pas:

Pas 1: implementeu un botó "Connecta cartera".

El primer pas és implementar un botó “Connecta cartera” que permetrà als usuaris connectar la seva cartera Metamask al vostre lloc web. Com que Metamask és una extensió del navegador, la interacció amb els seus mètodes es realitza a través de l’objecte ` window.ethereum `. Si utilitzeu un marc javascript /typescript, aquí teniu el fragment del mètode “Connecta Wallet”:

Pas 2: obteniu el missatge d'inici de sessió

L’estàndard ERC-4361 defineix un missatge de text pla estructurat que està signat per la cartera de l’usuari, que genera una signatura que es pot validar per saber si realment l’usuari és propietari de la cartera connectada. Tal com es proporciona al lloc web oficial d’Ethereum, aquí teniu un exemple d’aquest missatge:

vottun.tech vol que inicieu sessió amb el vostre compte d’Ethereum:

0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

Accepto les Condicions del servei de Vottun : https://vottun.tech/tos

URI: https://vottun.tech/login

Versió: 1

ID de cadena: 1

Noce: 32891756

Publicat a: 2021-09-30T16:25:24Z

Recursos:

  • ipfs://bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq/
  • https://example.com/my-web2-claim.json

Per obtenir aquest missatge, l’ API de Vottun proporciona una trucada POST que el genera amb el format correcte. Això anomenada espera dos capçaleres :

  • Una capçalera d’autenticació, que ha de contenir el testimoni del portador
  • Una capçalera “x-application- vk “, que ha de contenir l’ID de l’aplicació.

Aquests dos valors s’obtenen a https://apis.vottun.tech/trial , seguint els passos descrits al principi. Aquesta convocatòria també espera un cos amb els atributs següents:

Aquests són els camps obligatoris exigits per l’ERC-4361, i el seu significat es pot trobar a la documentació oficial ( https://eips.ethereum.org/EIPS/eip-4361 ). El fragment de CURL de aquesta crida a l’API és :

Aquest punt final retorna un JSON amb dos atributs:

  • Nonce: un identificador d’aquest missatge, per validar-lo posteriorment
  • Missatge: el missatge de text pla estructurat que es signarà

Pas 3: Signa el missatge

Després d’obtenir el missatge, la cartera ha de mostrar una “sol·licitud de signatura” per tal que l’usuari signi el missatge. Això es pot aconseguir mitjançant la biblioteca “Ethers”, utilitzant l’objecte “proveïdor” que vam emmagatzemar en connectar la cartera. Si utilitzeu un marc javascript /typescript, aquí teniu el fragment del mètode “Sign Message”:

Aquest mètode activarà la finestra “Solicitud de signatura” de la cartera instal·lada. Un cop l’usuari accepta la signatura, aquest mètode retornarà el hash que representa la signatura realitzada.

Pas 4: verifiqueu la signatura

L’últim pas és verificar que la signatura realitzada és vàlida, el que significa que l’usuari realment és propietari de l’adreça de cartera proporcionada. L’ API de Vottun proporciona una trucada GET que realitza aquesta verificació:

Els dos únics paràmetres (passats com a paràmetres de consulta) necessaris per a aquesta verificació són:

  • Nonce: que va ser proporcionat per la mateixa API en la generació del missatge, utilitzat com a identificador
  • Signatura: Quin és el hash de signatura que retorna el mètode ` signMessage ()`.

El resultat d’aquesta trucada a l’API és un codi d’estat 200 OK si la signatura és vàlida o un 403 Codi d’estat prohibit si la signatura no és vàlida.

Conclusions

En conclusió, la implementació d’un inici de sessió Web3 Ethereum en un lloc web basat en l’estàndard ERC-4361 pot millorar l’experiència de l’usuari permetent als usuaris iniciar sessió al lloc web amb la seva cartera Ethereum. Aquest tutorial ha mostrat als desenvolupadors com implementar un inici de sessió Web3 Ethereum mitjançant la cartera Metamask i l’ API Vottun Web3. Seguint els passos descrits en aquest tutorial, els desenvolupadors poden habilitar el seu lloc web per autenticar usuaris mitjançant signatures digitals d’Ethereum, que són segures i transparents. Això també permet als desenvolupadors crear aplicacions descentralitzades que aprofitin tot el potencial de la cadena de blocs Ethereum sense la necessitat d’un proveïdor d’autenticació de tercers.