¿Autenticar a un usuario a través de MetaMask (como Cryptokitties)? [duplicar]

Estoy tratando de entender cómo se puede autenticar a un usuario (como un inicio de sesión) usando MetaMask, de manera similar a cómo Cryptokitties te hace registrarte/iniciar sesión.

Por lo que entiendo, necesitamos que el usuario firme un mensaje para autenticar la propiedad de la clave privada que genera la dirección de un usuario. Entonces, si tengo una instancia web3 en mi archivo .js, ¿cómo puedo solicitar al usuario un inicio de sesión de metamáscara como Cryptokitties?

Tengo esto en mi archivo javascript:

// Is there is an injected web3 instance?
if (typeof web3 !== 'undefined') {
  App.web3Provider = web3.currentProvider;
  web3 = new Web3(web3.currentProvider);
} else {
  // If no injected web3 instance is detected, fallback to Ganache.
  App.web3Provider = new web3.providers.HttpProvider('http://127.0.0.1:7545');
  web3 = new Web3(App.web3Provider);
}

Respuestas (2)

Esto implica obtener firmas de mensajes del lado del cliente y verificarlas del lado del servidor.

Puede ver una publicación reciente en el blog de MetaMask sobre uno de nuestros últimos métodos de firma aquí:

https://medium.com/metamask/escalado-web3-con-signtypeddata-91d6efc8b290

Web3 Auth es un gran proyecto que creo que lo ayudará no solo a comprender cómo firmar mensajes, sino que también le mostrará las mejores prácticas para almacenar las claves de autenticación en el navegador del cliente.