I Just Want Authentication To Work
Tags: community, authentication, nextjs, auth
Published: 2023-11-22 23:32:35

_Originally posted by Alex Patterson @ FusionAuth.io_

Authentication is the process of verifying the identity of a user or entity. It is a fundamental security measure that is used in a wide variety of applications, including web applications, mobile apps, and APIs. The thing is, as a developer with over 20 years of experience, I just don't care about figuring it out! I just want it to work!!

There are many different ways to implement authentication, but the most common approach is to use a username and password. Yep, just like back in 1960 when [The Everly Brothers](https://youtu.be/KtY3L5tDN_E?si=BATB3BzJJFpWsHmB) had one of the top songs out there, this method is still most popular today. Just as the Everly Brothers' time at the top of the charts has passed, so has the time for passwords. I don't want to hear about them anymore!

A more modern approach is to use a single sign-on (SSO) solution. SSO solutions allow users to log in to multiple applications using a single set of credentials. This can be convenient for users, as they do not have to remember multiple usernames and passwords. This method came about around the same time Eminem hit the [billboard top 100](https://youtu.be/6mPCy9LMxTI?si=5A2I-N1neb_8rGOl) for the first time. SSO often has the problem of including the first login requirement of using a username and password to this day. Even Eminem made some changes and remains relevant!

My point is that authentication is an important security measure, but it can also be complex to implement. This is why we have been hanging on to these old methods for so long! When you are creating a new application (unless it is an *authentication* application), the last thing you care about is user login. There are many different authentication methods to choose from, and each method has its own advantages and disadvantages. Additionally, authentication needs to be implemented in a secure way to prevent attackers from gaining unauthorized access to applications. 
But, again, all I care about is that my data is secure when creating the next [Napster](https://youtu.be/CKrdsGdLVQ8?si=bTp4DHKS4tlpQzfW) so everyone can share their 1990s music with me again!

![Napster app from Wikipedia](https://fusionauth.io/img/blogs/i-just-want-authentication-to-work/napster.png)

## The benefits of using an authentication service

There are many benefits to using an authentication service. Authentication services can help you:  

* Save time and money: Implementing and maintaining authentication can be time-consuming and expensive. authentication services can save you the hassle of having to implement and maintain your authentication system. s
* Improve security: authentication services can help you to improve the security of your applications by using best practices and the latest security technologies keeping up to date with the latest security patches.
* Reduce the risk of compliance violations: authentication services can help you meet compliance requirements by providing features such as two-factor authentication and user provisioning.

The last thing that I want is a call on Saturday night that someone hacked the password database that we built in-house two years ago and didn't maintain securely!  

![Meme you can't leak passwords if you don't store passwords, man pointing at head](https://fusionauth.io/img/blogs/i-just-want-authentication-to-work/meme-leak.png)

## Choosing an authentication service

When choosing an authentication service, there are a few factors to consider:

* Features: Consider the features that are important to you, such as two-factor authentication, user provisioning, and support for different authentication methods.
* Pricing: authentication services can vary in price. Compare the pricing of different services to find the best deal for your needs.
* Ease of use: Consider how easy the authentication service is to use. You want a service that is easy to set up and manage.
* Hosting: Do you need flexibility to host your instance of an authentication Provider or have them host?
* Integration support: Often you'll want to use an authentication service as a central user data store. You'll want to make sure you can integrate custom applications, off-the-shelf commercial software, and open-source solutions with it.  

## For Developers Who Just Want It To Work

If you are a developer who just wants authentication to work without implementing it yourself, there are a few things that you can do to make your life easier:

* Use an authentication service. There are many different authentication services available, both free and paid. Authentication services can save you the hassle of having to implement and maintain your authentication system.
* Use a framework or library that provides authentication functionality. There are many different frameworks and libraries available that provide authentication functionality. Using a framework or library can save you the time and effort of having to implement authentication yourself. If you are ready to get started check out our [FusionAuth Quickstarts](/docs/quickstarts/).
* Consider that when Better Napster, wait I mean your app, starts to grow, you will want an authentication provider that can handle different devices and form factors such as mobile, desktop, and web clients.
* Develop a local instance or self-contained environment that you can host yourself to make development easier.  
* Look to your favorite framework provider and see what they are using and use an authentication framework built for that.



## What You _Should_ Care About

Now that you have authentication figured out you can start to focus on the real requirements of building an application...

Picking the rest of your software components:  

- Framework - [Remix](https://remix.run/), [Next.js](https://nextjs.org/), [SvelteKit](https://kit.svelte.dev/), [Pheonix Framework](https://www.phoenixframework.org/), [Laravel](https://laravel.com/), [Flask](https://flask.palletsprojects.com/en/3.0.x/), [Angular](https://angular.io/)
- Database - [PlanetScale](https://planetscale.com/), [AlloyDB for PostgreSQL](https://cloud.google.com/alloydb), [AWS Aurora Serverless](https://aws.amazon.com/rds/aurora/serverless/), [CockroachDB Serverless](https://www.cockroachlabs.com/blog/announcing-cockroachdb-serverless/), [EdgeDB](https://www.edgedb.com/), [Neon](https://neon.tech/), [Supabase](https://supabase.com/), [Timescale](https://www.timescale.com/), [Upstash](https://upstash.com/), [Grafbase](https://grafbase.com/), [Turso](https://turso.tech/), [Fauna](https://fauna.com/), [Ably](https://ably.com), [Convex](https://www.convex.dev/), [Hasura](https://hasura.io/), [liveblocks](https://liveblocks.io/)
- Hosting - [Vercel](https://vercel.com/), [Netlify](https://www.netlify.com/), [Fly.io](https://fly.io/), [Cloudflare](https://www.cloudflare.com/)
- CMS: [Contentful](https://www.contentful.com/), [Quintype](https://www.quintype.com/), [Hygraph](https://hygraph.com/), [Ghost](https://ghost.org/publishers/), [Strapi](https://strapi.io/), [Sanity](https://www.sanity.io/), [Kontent](https://kontent.ai/), [Optimizely](https://www.optimizely.com/products/orchestrate/content-management/)

There are full backend solutions out there like [Firebase](https://firebase.google.com/), [Supabase](https://supabase.com/), and [Appwrite](https://www.appwrite.io). However, if you don't like some part of these stacks then it becomes very difficult for you to decouple your application(s). In this video our Founder and CEO talks about [Authentication as a Microservice](https://youtu.be/SLc3cTlypwM?si=qFzJaeA9NTeXGSfz&t=834) and how to use a JWT in your APIs.  

## Finally

Okay, now that I got that out of my system I am off to listen to [Connor Price](https://youtu.be/UekfKh59KOw?si=xTM0powkicUHG2Yo) and log in to Amazon using my [face](https://www.aboutamazon.com/news/retail/amazon-passwordless-sign-in-passkey) because it is 2023 people!

Oh yeah and now the actual coding begins!!

If you want authentication to just work start using [FusionAuth today for free](/pricing)!

Want to get jump-started using your framework of choice? Check out our [Quickstarts](/docs/quickstarts/).