frontendmeetup / Proposals

Topic proposals for the Frontend Meetup Budapest
MIT License
6 stars 0 forks source link

Authentication in NextJS - NextAuth's capabiltities, signing in with Metamask #6

Open pkarolyi opened 1 year ago

pkarolyi commented 1 year ago

This would be a great talk, because

Next.js is a React framework that has been gaining a huge traction in recent years. NextAuth is the quasi-official authentication solution for Next, and while it has it's drawbacks it is a very powerful and easy-to-integrate authentication solution. We can demonstrate it's capabilities by solving a harder problem, authenticating users via their Metamask wallets.

Abstract

Nextjs is a framework that handles most aspects of frontend development, from routing through static/server side rendering to dynamic pages. Authentication handling is not built-in to Nextjs. The most popular library that specifically targets authentication in Nextjs is NextAuth.

NextAuth is mainly built to handle OIDC flows with various providers like Github or Google but it is possible to create custom authentication providers. With the increasing popularity of Web3 dapps there'll need to be a strong authentication layer in most applications that currently has to be custom written to a huge extent. Authenticating without giving out personally identifiable data or contact information is an ever increasing need. In this talk we implement an authentication flow that only requires access to a crypto wallet to prove user identity.


I'm Peter Karolyi, CTO of Dakai Group, a driver of emerging technologies in the tech world. Our company has been at the forefront of El Salvador's bitcoin roll out, we helped Spotify, Lufthansa and others adopt new technologies as well as we're working with Binance and Solana on their next big products including the Solana mobile phone that will be the first Android smartphone with a hardware wallet.

Details #### What language would you prefer to present this talk - [ ] english - [X] hungarian #### Would your employer / company host the Meetup for this talk? - [ ] yes!
greg-nagy commented 1 year ago

Can we please talk about Sign in with ethereum instead of Metamask? I assume this is the intended focus of the talk. https://login.xyz/

https://tally.cash/ also supports this, and incidentally, I work on that project ... 🙃

necccc commented 1 year ago

Looking at percentages, how much is this about NextAuth / Next and how much is about Metamask auth? Context for asking this: would the audience adopt what they learn easily with GH/Goggle/FB or Okta Auth for example?

necccc commented 1 year ago

Another question: the abstract looks pretty nice in English, you sure this is a talk presented in Hungarian? :D

pkarolyi commented 1 year ago

@necccc I am flexible about the direction of the talk based on what the audience is most likely to be interested in. The providers you list are all Oauth capable and as such, they are easily integrated with NextJS without any additional hassle. I can talk more in-depth about the limitations of NextAuth around non-OAuth providers like email/password login. I can present this in English if there is a need for that, but I prefer talking in Hungarian.

@greg-nagy to your point this is not about SIWE, when we first solved this problem I'm not sure if that even existed. But the solution we used and I want to present is very similar. We generate a nonce, ask the user to sign it, and check the signature with the public key. If I see correctly SIWE abstracts away the nonce generation/validation portion of this and is able to work with multiple wallets, is that correct?

necccc commented 1 year ago

@pkarolyi Thanks, I'd like to keep it simple as possible, the auth logic itself can be complex enough for newcomers.

I'd love to see this talk with NextAuth, Next.js and one of the OAuth provider, whichever you prefer.

Would it be possible to have this talk ready by the end of November?

necccc commented 1 year ago

Minor update: how about early december, it seems there's an event forming for those days

pkarolyi commented 1 year ago

@necccc Can you send me an email with the details of the event? (peter@dakai.io) I will answer this week if I'm able to make it, thanks!