Skip to content

Complete SDK Setup Guide

πŸš€ Walk through a complete integration of AuthVital into your application.

This guide is split into focused sections for easier navigation. By the end, you'll have:

  • βœ… OAuth 2.0 PKCE authentication flow
  • βœ… JWT validation and protected routes
  • βœ… Permission-based access control
  • βœ… Real-time identity sync via webhooks
  • βœ… React frontend with auth state management
  • βœ… Multi-tenant support

Guide Description
Prerequisites & Overview Requirements and architecture
Backend Setup Express and Next.js integration
Database & Identity Sync Prisma schema and webhook sync
Frontend Setup React provider and hooks
Common Patterns Permission checks, license gates, multi-tenant

Architecture at a Glance

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                           YOUR APPLICATION                                        β”‚
β”‚                                                                                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                         β”‚
β”‚  β”‚     FRONTEND        β”‚         β”‚      BACKEND        β”‚                         β”‚
β”‚  β”‚    (React/Next)     β”‚         β”‚  (Express/Next API) β”‚                         β”‚
β”‚  β”‚                     β”‚         β”‚                     β”‚                         β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚  REST   β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚                         β”‚
β”‚  β”‚  β”‚ AuthVital     β”‚  β”‚ ◄─────► β”‚  β”‚ Auth Routes   β”‚  β”‚                         β”‚
β”‚  β”‚  β”‚ Provider      β”‚  β”‚         β”‚  β”‚ /api/auth/*   β”‚  β”‚                         β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚         β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚                         β”‚
β”‚  β”‚         β”‚           β”‚         β”‚         β”‚           β”‚                         β”‚
β”‚  β”‚         β–Ό           β”‚         β”‚         β–Ό           β”‚                         β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚         β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚                         β”‚
β”‚  β”‚  β”‚ useAuth()     β”‚  β”‚         β”‚  β”‚ getCurrentUserβ”‚  β”‚                         β”‚
β”‚  β”‚  β”‚ Hook          β”‚  β”‚         β”‚  β”‚ JWT Validationβ”‚  β”‚                         β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚         β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚                         β”‚
β”‚  β”‚                     β”‚         β”‚         β”‚           β”‚                         β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚         β–Ό           β”‚                         β”‚
β”‚                                  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚                                  β”‚  β”‚ Webhook       │◄─┼──────│ YOUR DATABASE  β”‚ β”‚
β”‚                                  β”‚  β”‚ Handler       β”‚  β”‚      β”‚ (PostgreSQL)   β”‚ β”‚
β”‚                                  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚      β”‚                β”‚ β”‚
β”‚                                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚ av_identities  β”‚ β”‚
β”‚                                           β–²                   β”‚ av_sessions    β”‚ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”˜
                                            β”‚
                    OAuth Flow + Webhooks   β”‚
                                            β–Ό
                             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                             β”‚      AUTHVITAL IDP       β”‚
                             β”‚                          β”‚
                             β”‚  β€’ User Authentication   β”‚
                             β”‚  β€’ Token Issuance        β”‚
                             β”‚  β€’ JWKS Endpoint         β”‚
                             β”‚  β€’ Webhook Dispatch      β”‚
                             β”‚  β€’ Tenant Management     β”‚
                             β”‚  β€’ License Management    β”‚
                             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Data Flow Summary

Step Action Components
1️⃣ User clicks "Sign In" Frontend β†’ Redirect to AuthVital
2️⃣ User authenticates at AuthVital AuthVital IDP
3️⃣ AuthVital redirects back with code AuthVital β†’ Your Backend
4️⃣ Backend exchanges code for tokens Your Backend β†’ AuthVital
5️⃣ Backend sets httpOnly cookie Your Backend β†’ Browser
6️⃣ Frontend gets user data via API Frontend β†’ Your Backend
7️⃣ Webhooks sync identity changes AuthVital β†’ Your Database

Next Steps

Start with Prerequisites & Overview to understand the requirements and architecture.