NextAuth with Pages Router
This guide will help you integrate Descope with your NextAuth application using the Pages Router. Follow the steps below to get started.
If you're interested in using our native SDK instead of NextAuth, you can read about the pros and cons of each in our guide.
Install NextAuth.js
To use Descope with Next.js, the simplest method is to use NextAuth.js. You can install it with this command:
Import NextAuth Packages
Import all necessary NextAuth packages in a [...nextauth].ts
file. The location of [...nextauth].ts
will exist in pages/api/auth
.
Initialize Descope as a Provider
Once you've imported the necessary packages, you'll need to initialize NextAuth and add Descope as a provider.
Setup NextAuth's SessionProvider
In your _app.tsx
file, wrap the components in SessionProvider
to allow for session management and authentication throughout your Next application.
Accessing the Authentication Flow
Add a sign-in button in the client to access your sign-in authentication flow. The signIn
method has 'descope' as the provider id, and the callback URL set to /dashboard
as an example to redirect back to.
Session Management
To learn more about session management with NextAuth & Descope, check out the Web Client Session Validation docs.
Congratulations
Now that you've got the authentication down, go focus on building out the rest of your app!
Checkpoint
Your application is now integrated with Descope. Please test with sign-up or sign-in use case.
Using NextAuth and Customization
Once you've configured NextAuth to work with Descope as an OIDC provider, the next step is to utilize all of the various NextAuth functions in your application.
You can visit our guide with detailed docs on how all of the Sign In
, Logout
, etc. functions work with NextAuth, in your Next.js application.
Otherwise, you can visit our Flow Customization section to configure and personalize many different areas of Descope, including your brand, style, custom user authentication journeys, etc.
We recommend starting with customizing your user-facing screens, such as signup and login.
NextAuth and Widgets
For a sample app using the Pages Router with NextAuth and Widgets, please refer to our sample app in GitHub here.
If you're using NextAuth with Descope, you will have to incorporate some elements of our Next.js SDK in your application to be able to utilize Descope Widgets.
Using Widgets will require the use of our Next.js SDK in your application requires a reference to your Descope Project ID. This works from wrapping your _app.tsx
with our <AuthProvider>
wrapper from our Next.js SDK.
As long as the Widget components have access to your refresh tokens, you should be able to use them, even if using NextAuth. If you're managing your refresh tokens with localStorage
instead of cookies, you'll need to do some additional steps, documented below.
Managing Refresh Tokens
If you are managing your refresh tokens with cookies, and using Manage in Response Body for your Token Response Method instead, then you'll need to persist the refresh token in your application manually.
If you are using Manage in Cookies instead, you can skip this part.
You'll also need to modify the NextAuth callback functions to include the refresh token as well.
Once you've done that, the widgets should work with the same session created with every login with Descope.