Auth van Out

stop traffic signage near building

Ik ben nog niet zo skilled in web3, maar waar ik over viel, ik had nog geen goeie authorisatie check op smart contract functies. Dat ik nog kan bewaken wie wel en niet functies kan gebruiken. Je hebt wel de onlyOwner modifier, en je kunt gerust een ‘access control list’ aanleggen, een whitelist, en verder was iemand bezig met een login functie, en bij Worldcoin willen ze je iris scannen en zo.

Maar geen handige kant en klare auth-server.

Mijn insteek, ik laat mensen inloggen op een website met hun Google account. Op een ‘protected’ pagina (waar je alleen komt als je een geldige login hebt) kun je inloggen met Metamask en je wallet signen. Dan weet ik vrijwel 100%% zeker dat die wallet aan dat profiel gerelateerd is.

Ik sla die gegevens op in een smart contract, tenminste, niet de naam of email adres, maar het wallet address, de provider (google, facebook, twitter), de portal (‘juust.org’) en het profiel, de scope van authorisatie, je kunt nog een geldigheids-duratie aangeven als het moet.

Vervolgens kan ieder ander contract dat contract raadplegen. Zogauw iemand bijvoorbeeld de ‘transfer’-functie wil gebruiken. Die transfer en withdraw functies kan ik ‘bewaken’ met een modifier onlyAuth. Dat is dan een functie die checkt, voor het uitvoeren van de functie, of iemand voldoet aan de check in de onlyAuth modifier functie. Dus ik check of jouw certificaat voor dit ‘portal’ er is en wat je scope is. Als je niet geauthoriseerd bent, dan krijg je een EVM revert, dan voert het contract de functie niet uit.

Dat is een lelijke onelegante oplossing, maar het werkt . Ik heb dat even snel gebouwd, getest, alle testgevallen gaven de verwachte uitkomst, ‘dus’ het werkte. Ik hoop wel dat ik mettertijd iets betere oplossingen tegenkom. Maar als een van mijn eerste dAppjes is ‘ie wel gelukt.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top