ONDEV Logo

Expert en acquisition client digitale. Création de sites web et applications sur-mesure qui convertissent.

Services
  • Création de Sites Web
  • Applications Sur-Mesure
  • Publicité Digitale
  • Référencement SEO
  • Développeur Web Marseille
  • Création de Logo
  • Design UX/UI
  • Refonte d'Application
  • Maintenance Applicative
  • Audit de Code
  • Agence Vibe Coding
  • Logiciel Métier Sur-Mesure
  • Agence No Code
  • Portail Client & Extranet
  • Intranet Sur-Mesure
  • Refonte Site WordPress
  • Migration Angular vers React
Navigation
  • Accueil
  • Agence web à Marseille
  • Réalisations
  • Expertise
  • Qui sommes-nous
  • Blog
  • Contact
Guides
  • Nos guides
  • Comment créer un site internet
  • Pourquoi créer un site internet
  • Coût d'un site internet
  • Choisir son prestataire web
Contact

Mathieu Rabissoni

06 01 37 20 21WhatsAppmathieu@ondev.fr

Marseille, France

Suivez-nous

LinkedInInstagramFacebook
Zones d'intervention
Marseille|Aix-en-Provence|Aubagne|La Ciotat|Cassis|Allauch|Gardanne|Marignane|Vitrolles|Toutes nos zones

© 2026 ONDEV. Tous droits réservés.

Mentions légalesPolitique de confidentialitéPlan du site
ONDEV Logo
Réalisations
Contact
On en discute

Expertise

Création de Sites WebSite Vitrine MarseilleSite E-Commerce MarseilleRéférencement SEOOptimisation GEOApplications Web & MobileAgence CommunicationPublicité en LigneDéveloppeur Web Marseille
Réalisations

Ressources

Qui sommes-nous ?BlogGuides
Contact
AppelerWhatsApp
On en discute
  1. Accueil
  2. Blog
  3. Supabase Auth : 4 méthodes, RLS et Next.js
Développement
24 octobre 202614 mn

Supabase Auth : 4 méthodes, RLS et Next.js

Supabase Auth gère l'authentification de votre app : email, magic link, OAuth, OTP et sécurité RLS. Le guide pratique côté Next.js et React.

Mathieu Rabissoni

Mathieu Rabissoni

Expert Acquisition Client Digitale

Supabase Auth : 4 méthodes, RLS et Next.js
Supabase Auth : 4 méthodes, RLS et Next.js

Sommaire

01.Supabase Auth : 4 méthodes de connexion, une base Postgres et zéro serveur d'auth à maintenir02.Supabase Auth : qu'est-ce que c'est vraiment ?03.Supabase Auth face à Auth0 et Firebase Auth04.Les méthodes d'authentification disponibles05.Email et mot de passe06.Magic link et OTP07.OTP par SMS : quel fournisseur choisir ?08.OAuth Google, GitHub, Apple09.Comment Supabase Auth s'articule avec Postgres et la RLS10.Gérer les rôles et les permissions11.Bonnes pratiques de sécurité12.Sessions, JWT et refresh token : ce qui se passe vraiment13.Intégration côté Next.js et React14.Checklist avant de passer en production15.FAQ16.Conclusion : une authentification solide sans réinventer la roue

Supabase Auth : 4 méthodes de connexion, une base Postgres et zéro serveur d'auth à maintenir

L'authentification, c'est le mur que la plupart des projets rencontrent en premier. Gestion des sessions, hachage des mots de passe, OAuth, réinitialisation, jetons qui expirent : chaque brique mal posée devient une faille. Supabase Auth règle ce chantier en quelques lignes, avec Postgres et la Row Level Security derrière, et c'est la brique d'identité que nous déployons sur nos applications Next.js, dont Wiloq, notre SaaS de vestiaire numérique en production.

Dans cet article, vous allez découvrir :

  • •Les 4 méthodes d'authentification (email, magic link, OAuth, OTP), quand choisir chacune et quel fournisseur SMS brancher pour vos codes
  • •Comment Supabase Auth se connecte à votre base Postgres et sécurise chaque requête via la RLS
  • •Ce qui se passe vraiment avec le JWT et le refresh token, et comment gérer les rôles sans usine à gaz
  • •L'intégration côté Next.js et React, du client au middleware, telle qu'on la déploie chez ONDEV
  • •La checklist en 8 points que nous passons avant chaque mise en production, et le match face à Auth0 et Firebase Auth
Sur Wiloq, toute l'authentification (inscription, connexion, rôles organisateur et agent) tourne sur Supabase Auth, sans aucun serveur d'auth à maintenir.

Supabase Auth : qu'est-ce que c'est vraiment ?

Supabase Auth est le service d'identité intégré à Supabase. Il gère l'inscription, la connexion, les sessions et l'émission des tokens JWT, sans que vous ayez à écrire la moindre logique de hachage ou de gestion de session.

Concrètement, chaque utilisateur qui s'inscrit atterrit dans une table auth.users, gérée par Supabase. Vous n'y touchez pas directement : vous discutez avec elle via le SDK ou l'API.

La force du système, c'est qu'il ne vit pas à côté de votre base. Il vit dedans. L'identifiant de l'utilisateur connecté est disponible dans chaque requête SQL, ce qui ouvre la porte à une sécurité native que peu de solutions offrent aussi simplement.

Pour comprendre l'écosystème complet dans lequel s'inscrit ce service, consultez notre guide complet sur Supabase : il pose les bases (base de données, API, stockage, edge functions) avant de plonger dans l'authentification.

Supabase Auth face à Auth0 et Firebase Auth

La question revient à chaque cadrage : pourquoi ne pas prendre un service d'identité dédié ? Voici la grille que nous utilisons.

CritèreSupabase AuthAuth0Firebase Auth
Lien avec la base de donnéesNatif : auth.uid() disponible dans chaque requête SQL et dans la RLSAucun, à câbler soi-mêmeNatif avec Firestore, via les règles de sécurité
Base de donnéesPostgreSQL standard, exportableIndépendant de la baseFirestore, NoSQL propriétaire
Modèle de prixInclus dans le plan Supabase, facturé par utilisateur actif mensuel au-delà du quotaPar utilisateur actif, avec des paliers qui montent viteGratuit jusqu'à un seuil, SMS facturés à l'unité
Fonctions avancées (SSO entreprise, organisations)SSO SAML sur les plans payants, multi-tenant à construire côté basePoint fort : organisations, RBAC fin, règles d'entrepriseSAML et multi-tenant via la mise à niveau Identity Platform
HébergementCloud (régions UE) ou self-hostingCloud géré uniquementCloud Google uniquement
Dépendance au fournisseurFaible : Postgres et code open sourceForteForte
En résumé : Auth0 se justifie pour un produit B2B qui vend du SSO entreprise à de grands comptes. Pour un SaaS, une application métier ou un MVP dont les données vivent déjà dans Postgres, Supabase Auth fait le travail avec une brique de moins à maintenir. Pour la comparaison complète des deux plateformes, lisez notre comparatif Supabase vs Firebase.

Les méthodes d'authentification disponibles

Supabase Auth propose plusieurs stratégies. Le bon choix dépend de votre audience et du niveau de friction acceptable à l'inscription.

MéthodeFonctionnementIdéale pour
Email et mot de passeInscription classique avec vérification par emailApplications B2B, comptes durables
Magic linkUn lien de connexion unique envoyé par email, sans mot de passeProduits grand public, réduction de friction
OAuth (Google, GitHub, Apple)Connexion via un fournisseur tiers en un clicSaaS, onboarding rapide, confiance
OTP (code par SMS ou email)Code à usage unique à saisirVérification de numéro, 2FA, mobile

Email et mot de passe

La méthode de référence. Supabase gère le hachage (bcrypt), la vérification d'email et la réinitialisation. Vous appelez signUp puis signInWithPassword, le reste est automatique.

Magic link et OTP

Le magic link supprime totalement le mot de passe : l'utilisateur clique sur le lien reçu et il est connecté. L'OTP suit la même logique avec un code court, parfait pour le mobile ou la double authentification.

OTP par SMS : quel fournisseur choisir ?

Supabase Auth n'envoie pas les SMS lui-même : il délègue l'envoi à un fournisseur que vous branchez dans le dashboard. Les fournisseurs supportés nativement sont Twilio, Twilio Verify, MessageBird, Textlocal et Vonage.

Pour des codes d'authentification fiables, privilégiez un fournisseur qui propose des routes OTP dédiées (ou transactionnelles), séparées des routes marketing : la délivrabilité est meilleure et les délais de réception sont courts, ce qui compte quand un code expire en quelques minutes. Twilio Verify est le plus simple à mettre en place, car il gère lui-même la génération et la vérification du code.

Deux réflexes avant de choisir :

  • •Vérifiez le coût par SMS vers la France et les pays de vos utilisateurs : il varie fortement d'un fournisseur à l'autre
  • •Gardez l'OTP par email comme solution de repli : il est inclus dans Supabase, ne coûte rien de plus que votre service d'envoi d'emails (branchez un SMTP personnalisé en production) et suffit pour la majorité des applications web

Sur une application B2B, l'OTP par SMS se réserve en pratique à la double authentification des comptes à privilèges, pas à la connexion de tous les utilisateurs.

OAuth Google, GitHub, Apple

Un clic, une redirection vers le fournisseur, un retour authentifié. C'est le meilleur ratio conversion / sécurité pour un SaaS. Il suffit d'activer le provider dans le dashboard et de renseigner les clés OAuth.

Comment Supabase Auth s'articule avec Postgres et la RLS

C'est ici que Supabase se distingue. L'utilisateur authentifié n'est pas juste une session côté application : son identifiant est injecté dans chaque requête SQL via la fonction auth.uid().

Couplée à la Row Level Security de Postgres, cette mécanique garantit qu'un utilisateur ne peut lire ou modifier que ses propres données, directement au niveau de la base. Même si votre code côté client contient un bug, la base refuse la requête.

Exemple de politique RLS classique :

sql
create policy "Un utilisateur lit ses propres commandes"
on commandes for select
using ( auth.uid() = user_id );

Cette ligne suffit à verrouiller toute une table. Sans elle, une clé API exposée côté navigateur donnerait accès à tout. Avec elle, la sécurité est portée par la base, pas par la confiance dans le frontend.

À lire aussi : Supabase RLS : sécuriser vos données avec la Row Level Security - le guide détaillé pour écrire des politiques robustes sans vous piquer avec le SQL.

Gérer les rôles et les permissions

Toutes les applications ne se contentent pas d'un seul type d'utilisateur. Un SaaS distingue souvent admin, membre et invité. Supabase offre deux approches complémentaires.

Les custom claims dans le JWT. Vous ajoutez un rôle dans les métadonnées du token via une edge function ou un trigger. Ce rôle devient lisible dans vos politiques RLS avec une condition du type auth.jwt() ->> 'role' = 'admin'.

Une table de profils dédiée. Vous créez une table profiles liée à auth.users par l'identifiant, qui stocke le rôle et les préférences. C'est la méthode la plus lisible et la plus évolutive.

  • •Créez la table profiles avec une colonne role
  • •Ajoutez un trigger qui crée le profil à chaque inscription
  • •Référencez ce rôle dans vos politiques RLS pour filtrer les accès
  • •Ne stockez jamais un rôle sensible côté client : la vérité reste en base

Sur Wiloq, cette séparation organisateur / agent repose exactement sur ce schéma. Chaque interface n'affiche que ce que le rôle autorise, et la RLS bloque tout accès non prévu côté serveur.

Quand plusieurs organisations partagent la même base, le rôle ne suffit plus : il faut isoler les données par tenant. Nous détaillons ce découpage dans notre guide sur l'architecture multi-tenant d'un SaaS Supabase.

Bonnes pratiques de sécurité

Supabase fait le gros du travail, mais quelques règles restent à votre charge.

  • •Activez la RLS sur toutes vos tables. Une table sans politique est soit ouverte, soit fermée : ne laissez jamais ce choix au hasard.
  • •Ne confondez jamais la clé anon et la clé service_role. La première est publique et respecte la RLS ; la seconde ignore toutes les règles et ne doit vivre que côté serveur.
  • •Exigez la vérification d'email avant d'accorder le moindre accès sensible.
  • •Activez la double authentification (OTP) pour les comptes à privilèges.
  • •Limitez la durée de vie des tokens et gérez le refresh proprement pour éviter les sessions éternelles.
  • •Surveillez les tentatives de connexion via les logs Supabase pour détecter les attaques par force brute.
La faille la plus fréquente n'est pas dans Supabase : c'est une clé service_role exposée dans un bundle frontend. Gardez-la côté serveur, toujours.

Sessions, JWT et refresh token : ce qui se passe vraiment

À chaque connexion, Supabase Auth délivre deux jetons. L'access token est un JWT de courte durée (une heure par défaut, réglable dans le dashboard) qui accompagne chaque requête vers l'API et la base. Le refresh token sert uniquement à obtenir un nouvel access token quand le premier expire.

Trois règles à respecter :

  • •Ne rallongez pas la durée du JWT pour éviter les déconnexions : rafraîchissez-le. Un JWT court limite la fenêtre d'exploitation en cas de vol de jeton.
  • •Laissez le SDK gérer le refresh. Côté navigateur, @supabase/ssr renouvelle la session automatiquement ; côté Next.js, c'est le middleware qui s'en charge avant le rendu.
  • •Déconnectez proprement avec signOut() : le refresh token est révoqué côté serveur et la session ne peut plus être prolongée. L'access token en cours reste valable jusqu'à son expiration, raison de plus pour le garder court.

Le refresh token est à usage unique et tourne à chaque renouvellement : si un ancien jeton est réutilisé en dehors d'une courte fenêtre de tolérance, Supabase détecte la tentative et révoque la session concernée. C'est ce mécanisme qui protège vos utilisateurs contre le rejeu d'un cookie volé.

Intégration côté Next.js et React

C'est le terrain de jeu favori d'ONDEV. La combinaison Supabase et Next.js permet une authentification propre, du composant client au rendu serveur.

Côté client, le SDK gère la session et l'écoute des changements d'état :

javascript
import { createBrowserClient } from '@supabase/ssr'

const supabase = createBrowserClient(url, anonKey)

// Connexion OAuth Google
await supabase.auth.signInWithOAuth({ provider: 'google' })

Côté serveur, un middleware Next.js (le fichier proxy.ts depuis Next.js 16) rafraîchit la session et protège les routes avant même le rendu de la page. L'utilisateur non connecté est redirigé sans jamais voir le contenu protégé.

Le point clé : avec la librairie @supabase/ssr, la session est partagée entre le serveur et le client via des cookies sécurisés. Vos Server Components lisent l'utilisateur directement, sans appel supplémentaire.

Pour l'architecture complète de ce duo, ne manquez pas notre article dédié.

À lire aussi : Supabase et Next.js : le combo de production - pourquoi cette stack accélère le développement sans sacrifier la performance.

Vous voulez voir le résultat en production ? Notre réalisation Wiloq, application SaaS de vestiaire numérique illustre une authentification multi-rôles complète construite sur Next.js et Supabase, avec 12+ fonctionnalités déployées.

Si votre projet demande un accompagnement sur-mesure, notre agence spécialisée Supabase prend en charge l'architecture, l'authentification et la sécurité de bout en bout.

Checklist avant de passer en production

Fin septembre 2026, une étude d'UpGuard, relayée en France par Clubic, a recensé plus de 16 000 bases Supabase aux tables lisibles sans authentification, plus de la moitié contenant des indices de données personnelles. Il ne s'agissait pas d'une faille de Supabase, mais d'erreurs de configuration : des tables sans RLS ni politiques adaptées.

Le piège est subtil : les tables créées depuis le dashboard ont la RLS activée par défaut, mais celles créées en SQL, par un script de migration ou par un agent de code IA doivent l'activer explicitement. Ajoutez à cela la clé service_role embarquée côté client, et vous tenez les deux erreurs les plus fréquentes sur un projet Supabase.

Voici les 8 points que nous vérifions sur chaque projet avant la mise en ligne :

Point de contrôlePourquoi
RLS activée sur toutes les tables du schéma public, y compris celles créées en SQLUne table sans politique est lisible par n'importe qui avec la clé anon
Clé service_role absente du code frontend et des variables publiquesElle ignore toutes les règles de sécurité
Vérification d'email obligatoire avant tout accès sensibleBloque les comptes jetables et les inscriptions automatisées
Captcha activé sur l'inscription et la connexionSupabase supporte hCaptcha et Cloudflare Turnstile en natif
MFA (TOTP) proposée aux comptes adminUn mot de passe seul ne protège pas un compte à privilèges
Durée du JWT courte et refresh géré par le middlewareLimite la fenêtre d'exploitation d'un jeton volé
URL de redirection OAuth restreintes aux domaines de productionEmpêche le détournement du flux de connexion
Politiques RLS testées avec un utilisateur non adminUne politique écrite n'est pas une politique vérifiée
Vous avez hérité d'une application Supabase et vous n'êtes pas sûr de ce qui a été fait ? C'est exactement le périmètre de notre audit de code et de sécurité : nous passons chaque table, chaque politique et chaque clé au crible avant qu'un incident ne le fasse pour vous.

FAQ

Supabase Auth est-il gratuit ?
Oui, l'authentification est incluse dans l'offre gratuite de Supabase, avec un plafond généreux d'utilisateurs actifs mensuels. Les fournisseurs OAuth comme Google ou GitHub sont eux aussi gratuits à activer. Vous ne payez que si votre volume dépasse les seuils du plan gratuit.
Quelle différence entre Supabase Auth et la RLS ?
Supabase Auth vérifie qui est l'utilisateur (identité et session). La Row Level Security décide ce qu'il a le droit de voir ou modifier au niveau de la base. Les deux travaillent ensemble : l'auth fournit l'identifiant, la RLS applique les règles. Notre guide sur la Row Level Security détaille ce fonctionnement.
Peut-on migrer une authentification existante vers Supabase Auth ?
Oui. Supabase permet d'importer des utilisateurs existants, y compris avec leurs mots de passe hachés si l'algorithme est compatible. Pour une migration propre, mieux vaut planifier une stratégie de bascule progressive, ce que notre agence Supabase gère régulièrement. Le cas le plus fréquent est la migration de Firebase vers Supabase, que nous avons documentée étape par étape.
Faut-il un serveur backend en plus de Supabase Auth ?
Non, dans la majorité des cas. Supabase Auth, la base Postgres et les edge functions couvrent l'essentiel. Un backend dédié n'est utile que pour une logique métier lourde ou des intégrations tierces complexes.
Comment gérer les rôles admin et utilisateur avec Supabase ?
Le plus simple est une table de profils liée à auth.users avec une colonne rôle, référencée dans vos politiques RLS. Vous pouvez aussi injecter le rôle dans le JWT via un trigger. Ne fiez jamais le contrôle des rôles au seul frontend.
Supabase Auth envoie-t-il lui-même les SMS pour les codes OTP ?
Non. L'envoi du SMS passe par un fournisseur que vous configurez dans le dashboard : Twilio, Twilio Verify, MessageBird, Textlocal ou Vonage. Supabase génère et vérifie le code, sauf avec Twilio Verify qui s'en charge lui-même. Choisissez un fournisseur avec des routes OTP dédiées pour garantir des délais de réception courts, et gardez l'OTP par email, inclus dans Supabase, comme solution de repli.
Quelle est la durée d'une session Supabase Auth et comment gérer le refresh token ?
L'access token (JWT) expire au bout d'une heure par défaut. Le refresh token permet d'en obtenir un nouveau sans redemander le mot de passe : avec @supabase/ssr, le renouvellement est automatique côté navigateur et pris en charge par le middleware côté Next.js. Le refresh token est à usage unique et tourne à chaque renouvellement, ce qui bloque la réutilisation d'un jeton volé.
Supabase Auth ou Auth0 : lequel choisir ?
Si vos données vivent déjà dans Postgres, Supabase Auth est le choix naturel : l'identité de l'utilisateur est disponible directement dans vos requêtes SQL et vos politiques RLS, sans brique supplémentaire à payer ni à maintenir. Auth0 reste pertinent pour un produit B2B qui doit vendre du SSO entreprise, des organisations et un RBAC très fin à de grands comptes.
Comment protéger une route Next.js avec Supabase Auth ?
Le plus robuste est un middleware Next.js qui lit la session via @supabase/ssr, la rafraîchit si besoin et redirige vers la page de connexion quand aucun utilisateur n'est présent. Les Server Components lisent ensuite l'utilisateur directement depuis les cookies. Et même si le middleware laisse passer une requête par erreur, la RLS côté base refuse l'accès aux données : c'est la double protection que nous mettons en place sur chaque projet.

Conclusion : une authentification solide sans réinventer la roue

Supabase Auth vous offre une authentification de niveau production en quelques heures : méthodes multiples, intégration native avec Postgres, sécurité portée par la RLS et compatibilité parfaite avec Next.js et React. C'est exactement la stack que nous utilisons en développement d'applications web sur-mesure, notamment pour Wiloq, sans serveur d'auth à maintenir.

Reste à l'implémenter proprement : politiques RLS bien pensées, gestion des rôles solide, clés bien cloisonnées, jetons courts. Une erreur ici coûte cher.

Vous lancez une application et vous voulez une authentification sécurisée dès le premier jour ? Parlons de votre projet : on construit l'architecture Supabase qui protège vos données et vos utilisateurs.

Auteur

Mathieu Rabissoni

Mathieu Rabissoni

Expert Web

Infos

24 octobre 2026
14 mn
Développement

Service lié

Création site internet

Site sur-mesure avec SEO intégré, livré en 30 jours.

Découvrir

Travailler avec ONDEV

On construit pour vous un site sur mesure, adapté à vos enjeux business.

  • Sans dépendance technique
  • Sans frais de maintenance inutiles
On en discute ?

Avec nous c'est simple, rien n'est compliqué !

Nos réalisations

Refonte & SEO - Amadeus Centre d’Affaires
Refonte & Stratégie SEO

Refonte & SEO - Amadeus Centre d’Affaires

Wiloq - Application SaaS Vestiaire Numérique
Application SaaS

Wiloq - Application SaaS Vestiaire Numérique

Voir toutes les réalisations

Supabase Auth : 4 méthodes de connexion, une base Postgres et zéro serveur d'auth à maintenir

L'authentification, c'est le mur que la plupart des projets rencontrent en premier. Gestion des sessions, hachage des mots de passe, OAuth, réinitialisation, jetons qui expirent : chaque brique mal posée devient une faille. Supabase Auth règle ce chantier en quelques lignes, avec Postgres et la Row Level Security derrière, et c'est la brique d'identité que nous déployons sur nos applications Next.js, dont Wiloq, notre SaaS de vestiaire numérique en production.

Dans cet article, vous allez découvrir :

  • •Les 4 méthodes d'authentification (email, magic link, OAuth, OTP), quand choisir chacune et quel fournisseur SMS brancher pour vos codes
  • •Comment Supabase Auth se connecte à votre base Postgres et sécurise chaque requête via la RLS
  • •Ce qui se passe vraiment avec le JWT et le refresh token, et comment gérer les rôles sans usine à gaz
  • •L'intégration côté Next.js et React, du client au middleware, telle qu'on la déploie chez ONDEV
  • •La checklist en 8 points que nous passons avant chaque mise en production, et le match face à Auth0 et Firebase Auth
Sur Wiloq, toute l'authentification (inscription, connexion, rôles organisateur et agent) tourne sur Supabase Auth, sans aucun serveur d'auth à maintenir.

Supabase Auth : qu'est-ce que c'est vraiment ?

Supabase Auth est le service d'identité intégré à Supabase. Il gère l'inscription, la connexion, les sessions et l'émission des tokens JWT, sans que vous ayez à écrire la moindre logique de hachage ou de gestion de session.

Concrètement, chaque utilisateur qui s'inscrit atterrit dans une table auth.users, gérée par Supabase. Vous n'y touchez pas directement : vous discutez avec elle via le SDK ou l'API.

La force du système, c'est qu'il ne vit pas à côté de votre base. Il vit dedans. L'identifiant de l'utilisateur connecté est disponible dans chaque requête SQL, ce qui ouvre la porte à une sécurité native que peu de solutions offrent aussi simplement.

Pour comprendre l'écosystème complet dans lequel s'inscrit ce service, consultez notre guide complet sur Supabase : il pose les bases (base de données, API, stockage, edge functions) avant de plonger dans l'authentification.

Supabase Auth face à Auth0 et Firebase Auth

La question revient à chaque cadrage : pourquoi ne pas prendre un service d'identité dédié ? Voici la grille que nous utilisons.

CritèreSupabase AuthAuth0Firebase Auth
Lien avec la base de donnéesNatif : auth.uid() disponible dans chaque requête SQL et dans la RLSAucun, à câbler soi-mêmeNatif avec Firestore, via les règles de sécurité
Base de donnéesPostgreSQL standard, exportableIndépendant de la baseFirestore, NoSQL propriétaire
Modèle de prixInclus dans le plan Supabase, facturé par utilisateur actif mensuel au-delà du quotaPar utilisateur actif, avec des paliers qui montent viteGratuit jusqu'à un seuil, SMS facturés à l'unité
Fonctions avancées (SSO entreprise, organisations)SSO SAML sur les plans payants, multi-tenant à construire côté basePoint fort : organisations, RBAC fin, règles d'entrepriseSAML et multi-tenant via la mise à niveau Identity Platform
HébergementCloud (régions UE) ou self-hostingCloud géré uniquementCloud Google uniquement
Dépendance au fournisseurFaible : Postgres et code open sourceForteForte
En résumé : Auth0 se justifie pour un produit B2B qui vend du SSO entreprise à de grands comptes. Pour un SaaS, une application métier ou un MVP dont les données vivent déjà dans Postgres, Supabase Auth fait le travail avec une brique de moins à maintenir. Pour la comparaison complète des deux plateformes, lisez notre comparatif Supabase vs Firebase.

Les méthodes d'authentification disponibles

Supabase Auth propose plusieurs stratégies. Le bon choix dépend de votre audience et du niveau de friction acceptable à l'inscription.

MéthodeFonctionnementIdéale pour
Email et mot de passeInscription classique avec vérification par emailApplications B2B, comptes durables
Magic linkUn lien de connexion unique envoyé par email, sans mot de passeProduits grand public, réduction de friction
OAuth (Google, GitHub, Apple)Connexion via un fournisseur tiers en un clicSaaS, onboarding rapide, confiance
OTP (code par SMS ou email)Code à usage unique à saisirVérification de numéro, 2FA, mobile

Email et mot de passe

La méthode de référence. Supabase gère le hachage (bcrypt), la vérification d'email et la réinitialisation. Vous appelez signUp puis signInWithPassword, le reste est automatique.

Magic link et OTP

Le magic link supprime totalement le mot de passe : l'utilisateur clique sur le lien reçu et il est connecté. L'OTP suit la même logique avec un code court, parfait pour le mobile ou la double authentification.

OTP par SMS : quel fournisseur choisir ?

Supabase Auth n'envoie pas les SMS lui-même : il délègue l'envoi à un fournisseur que vous branchez dans le dashboard. Les fournisseurs supportés nativement sont Twilio, Twilio Verify, MessageBird, Textlocal et Vonage.

Pour des codes d'authentification fiables, privilégiez un fournisseur qui propose des routes OTP dédiées (ou transactionnelles), séparées des routes marketing : la délivrabilité est meilleure et les délais de réception sont courts, ce qui compte quand un code expire en quelques minutes. Twilio Verify est le plus simple à mettre en place, car il gère lui-même la génération et la vérification du code.

Deux réflexes avant de choisir :

  • •Vérifiez le coût par SMS vers la France et les pays de vos utilisateurs : il varie fortement d'un fournisseur à l'autre
  • •Gardez l'OTP par email comme solution de repli : il est inclus dans Supabase, ne coûte rien de plus que votre service d'envoi d'emails (branchez un SMTP personnalisé en production) et suffit pour la majorité des applications web

Sur une application B2B, l'OTP par SMS se réserve en pratique à la double authentification des comptes à privilèges, pas à la connexion de tous les utilisateurs.

OAuth Google, GitHub, Apple

Un clic, une redirection vers le fournisseur, un retour authentifié. C'est le meilleur ratio conversion / sécurité pour un SaaS. Il suffit d'activer le provider dans le dashboard et de renseigner les clés OAuth.

Comment Supabase Auth s'articule avec Postgres et la RLS

C'est ici que Supabase se distingue. L'utilisateur authentifié n'est pas juste une session côté application : son identifiant est injecté dans chaque requête SQL via la fonction auth.uid().

Couplée à la Row Level Security de Postgres, cette mécanique garantit qu'un utilisateur ne peut lire ou modifier que ses propres données, directement au niveau de la base. Même si votre code côté client contient un bug, la base refuse la requête.

Exemple de politique RLS classique :

sql
create policy "Un utilisateur lit ses propres commandes"
on commandes for select
using ( auth.uid() = user_id );

Cette ligne suffit à verrouiller toute une table. Sans elle, une clé API exposée côté navigateur donnerait accès à tout. Avec elle, la sécurité est portée par la base, pas par la confiance dans le frontend.

À lire aussi : Supabase RLS : sécuriser vos données avec la Row Level Security - le guide détaillé pour écrire des politiques robustes sans vous piquer avec le SQL.

Gérer les rôles et les permissions

Toutes les applications ne se contentent pas d'un seul type d'utilisateur. Un SaaS distingue souvent admin, membre et invité. Supabase offre deux approches complémentaires.

Les custom claims dans le JWT. Vous ajoutez un rôle dans les métadonnées du token via une edge function ou un trigger. Ce rôle devient lisible dans vos politiques RLS avec une condition du type auth.jwt() ->> 'role' = 'admin'.

Une table de profils dédiée. Vous créez une table profiles liée à auth.users par l'identifiant, qui stocke le rôle et les préférences. C'est la méthode la plus lisible et la plus évolutive.

  • •Créez la table profiles avec une colonne role
  • •Ajoutez un trigger qui crée le profil à chaque inscription
  • •Référencez ce rôle dans vos politiques RLS pour filtrer les accès
  • •Ne stockez jamais un rôle sensible côté client : la vérité reste en base

Sur Wiloq, cette séparation organisateur / agent repose exactement sur ce schéma. Chaque interface n'affiche que ce que le rôle autorise, et la RLS bloque tout accès non prévu côté serveur.

Quand plusieurs organisations partagent la même base, le rôle ne suffit plus : il faut isoler les données par tenant. Nous détaillons ce découpage dans notre guide sur l'architecture multi-tenant d'un SaaS Supabase.

Bonnes pratiques de sécurité

Supabase fait le gros du travail, mais quelques règles restent à votre charge.

  • •Activez la RLS sur toutes vos tables. Une table sans politique est soit ouverte, soit fermée : ne laissez jamais ce choix au hasard.
  • •Ne confondez jamais la clé anon et la clé service_role. La première est publique et respecte la RLS ; la seconde ignore toutes les règles et ne doit vivre que côté serveur.
  • •Exigez la vérification d'email avant d'accorder le moindre accès sensible.
  • •Activez la double authentification (OTP) pour les comptes à privilèges.
  • •Limitez la durée de vie des tokens et gérez le refresh proprement pour éviter les sessions éternelles.
  • •Surveillez les tentatives de connexion via les logs Supabase pour détecter les attaques par force brute.
La faille la plus fréquente n'est pas dans Supabase : c'est une clé service_role exposée dans un bundle frontend. Gardez-la côté serveur, toujours.

Sessions, JWT et refresh token : ce qui se passe vraiment

À chaque connexion, Supabase Auth délivre deux jetons. L'access token est un JWT de courte durée (une heure par défaut, réglable dans le dashboard) qui accompagne chaque requête vers l'API et la base. Le refresh token sert uniquement à obtenir un nouvel access token quand le premier expire.

Trois règles à respecter :

  • •Ne rallongez pas la durée du JWT pour éviter les déconnexions : rafraîchissez-le. Un JWT court limite la fenêtre d'exploitation en cas de vol de jeton.
  • •Laissez le SDK gérer le refresh. Côté navigateur, @supabase/ssr renouvelle la session automatiquement ; côté Next.js, c'est le middleware qui s'en charge avant le rendu.
  • •Déconnectez proprement avec signOut() : le refresh token est révoqué côté serveur et la session ne peut plus être prolongée. L'access token en cours reste valable jusqu'à son expiration, raison de plus pour le garder court.

Le refresh token est à usage unique et tourne à chaque renouvellement : si un ancien jeton est réutilisé en dehors d'une courte fenêtre de tolérance, Supabase détecte la tentative et révoque la session concernée. C'est ce mécanisme qui protège vos utilisateurs contre le rejeu d'un cookie volé.

Intégration côté Next.js et React

C'est le terrain de jeu favori d'ONDEV. La combinaison Supabase et Next.js permet une authentification propre, du composant client au rendu serveur.

Côté client, le SDK gère la session et l'écoute des changements d'état :

javascript
import { createBrowserClient } from '@supabase/ssr'

const supabase = createBrowserClient(url, anonKey)

// Connexion OAuth Google
await supabase.auth.signInWithOAuth({ provider: 'google' })

Côté serveur, un middleware Next.js (le fichier proxy.ts depuis Next.js 16) rafraîchit la session et protège les routes avant même le rendu de la page. L'utilisateur non connecté est redirigé sans jamais voir le contenu protégé.

Le point clé : avec la librairie @supabase/ssr, la session est partagée entre le serveur et le client via des cookies sécurisés. Vos Server Components lisent l'utilisateur directement, sans appel supplémentaire.

Pour l'architecture complète de ce duo, ne manquez pas notre article dédié.

À lire aussi : Supabase et Next.js : le combo de production - pourquoi cette stack accélère le développement sans sacrifier la performance.

Vous voulez voir le résultat en production ? Notre réalisation Wiloq, application SaaS de vestiaire numérique illustre une authentification multi-rôles complète construite sur Next.js et Supabase, avec 12+ fonctionnalités déployées.

Si votre projet demande un accompagnement sur-mesure, notre agence spécialisée Supabase prend en charge l'architecture, l'authentification et la sécurité de bout en bout.

Checklist avant de passer en production

Fin septembre 2026, une étude d'UpGuard, relayée en France par Clubic, a recensé plus de 16 000 bases Supabase aux tables lisibles sans authentification, plus de la moitié contenant des indices de données personnelles. Il ne s'agissait pas d'une faille de Supabase, mais d'erreurs de configuration : des tables sans RLS ni politiques adaptées.

Le piège est subtil : les tables créées depuis le dashboard ont la RLS activée par défaut, mais celles créées en SQL, par un script de migration ou par un agent de code IA doivent l'activer explicitement. Ajoutez à cela la clé service_role embarquée côté client, et vous tenez les deux erreurs les plus fréquentes sur un projet Supabase.

Voici les 8 points que nous vérifions sur chaque projet avant la mise en ligne :

Point de contrôlePourquoi
RLS activée sur toutes les tables du schéma public, y compris celles créées en SQLUne table sans politique est lisible par n'importe qui avec la clé anon
Clé service_role absente du code frontend et des variables publiquesElle ignore toutes les règles de sécurité
Vérification d'email obligatoire avant tout accès sensibleBloque les comptes jetables et les inscriptions automatisées
Captcha activé sur l'inscription et la connexionSupabase supporte hCaptcha et Cloudflare Turnstile en natif
MFA (TOTP) proposée aux comptes adminUn mot de passe seul ne protège pas un compte à privilèges
Durée du JWT courte et refresh géré par le middlewareLimite la fenêtre d'exploitation d'un jeton volé
URL de redirection OAuth restreintes aux domaines de productionEmpêche le détournement du flux de connexion
Politiques RLS testées avec un utilisateur non adminUne politique écrite n'est pas une politique vérifiée
Vous avez hérité d'une application Supabase et vous n'êtes pas sûr de ce qui a été fait ? C'est exactement le périmètre de notre audit de code et de sécurité : nous passons chaque table, chaque politique et chaque clé au crible avant qu'un incident ne le fasse pour vous.

FAQ

Supabase Auth est-il gratuit ?
Oui, l'authentification est incluse dans l'offre gratuite de Supabase, avec un plafond généreux d'utilisateurs actifs mensuels. Les fournisseurs OAuth comme Google ou GitHub sont eux aussi gratuits à activer. Vous ne payez que si votre volume dépasse les seuils du plan gratuit.
Quelle différence entre Supabase Auth et la RLS ?
Supabase Auth vérifie qui est l'utilisateur (identité et session). La Row Level Security décide ce qu'il a le droit de voir ou modifier au niveau de la base. Les deux travaillent ensemble : l'auth fournit l'identifiant, la RLS applique les règles. Notre guide sur la Row Level Security détaille ce fonctionnement.
Peut-on migrer une authentification existante vers Supabase Auth ?
Oui. Supabase permet d'importer des utilisateurs existants, y compris avec leurs mots de passe hachés si l'algorithme est compatible. Pour une migration propre, mieux vaut planifier une stratégie de bascule progressive, ce que notre agence Supabase gère régulièrement. Le cas le plus fréquent est la migration de Firebase vers Supabase, que nous avons documentée étape par étape.
Faut-il un serveur backend en plus de Supabase Auth ?
Non, dans la majorité des cas. Supabase Auth, la base Postgres et les edge functions couvrent l'essentiel. Un backend dédié n'est utile que pour une logique métier lourde ou des intégrations tierces complexes.
Comment gérer les rôles admin et utilisateur avec Supabase ?
Le plus simple est une table de profils liée à auth.users avec une colonne rôle, référencée dans vos politiques RLS. Vous pouvez aussi injecter le rôle dans le JWT via un trigger. Ne fiez jamais le contrôle des rôles au seul frontend.
Supabase Auth envoie-t-il lui-même les SMS pour les codes OTP ?
Non. L'envoi du SMS passe par un fournisseur que vous configurez dans le dashboard : Twilio, Twilio Verify, MessageBird, Textlocal ou Vonage. Supabase génère et vérifie le code, sauf avec Twilio Verify qui s'en charge lui-même. Choisissez un fournisseur avec des routes OTP dédiées pour garantir des délais de réception courts, et gardez l'OTP par email, inclus dans Supabase, comme solution de repli.
Quelle est la durée d'une session Supabase Auth et comment gérer le refresh token ?
L'access token (JWT) expire au bout d'une heure par défaut. Le refresh token permet d'en obtenir un nouveau sans redemander le mot de passe : avec @supabase/ssr, le renouvellement est automatique côté navigateur et pris en charge par le middleware côté Next.js. Le refresh token est à usage unique et tourne à chaque renouvellement, ce qui bloque la réutilisation d'un jeton volé.
Supabase Auth ou Auth0 : lequel choisir ?
Si vos données vivent déjà dans Postgres, Supabase Auth est le choix naturel : l'identité de l'utilisateur est disponible directement dans vos requêtes SQL et vos politiques RLS, sans brique supplémentaire à payer ni à maintenir. Auth0 reste pertinent pour un produit B2B qui doit vendre du SSO entreprise, des organisations et un RBAC très fin à de grands comptes.
Comment protéger une route Next.js avec Supabase Auth ?
Le plus robuste est un middleware Next.js qui lit la session via @supabase/ssr, la rafraîchit si besoin et redirige vers la page de connexion quand aucun utilisateur n'est présent. Les Server Components lisent ensuite l'utilisateur directement depuis les cookies. Et même si le middleware laisse passer une requête par erreur, la RLS côté base refuse l'accès aux données : c'est la double protection que nous mettons en place sur chaque projet.

Conclusion : une authentification solide sans réinventer la roue

Supabase Auth vous offre une authentification de niveau production en quelques heures : méthodes multiples, intégration native avec Postgres, sécurité portée par la RLS et compatibilité parfaite avec Next.js et React. C'est exactement la stack que nous utilisons en développement d'applications web sur-mesure, notamment pour Wiloq, sans serveur d'auth à maintenir.

Reste à l'implémenter proprement : politiques RLS bien pensées, gestion des rôles solide, clés bien cloisonnées, jetons courts. Une erreur ici coûte cher.

Vous lancez une application et vous voulez une authentification sécurisée dès le premier jour ? Parlons de votre projet : on construit l'architecture Supabase qui protège vos données et vos utilisateurs.

Mathieu Rabissoni

Mathieu Rabissoni

Expert Web

24 octobre 2026
14 mn
Développement

Service lié

Création site internet

Site sur-mesure avec SEO intégré, livré en 30 jours.

Découvrir

Travailler avec ONDEV

On construit pour vous un site sur mesure, adapté à vos enjeux business.

On en discute ?
Mathieu Rabissoni

Mathieu Rabissoni

Expert Acquisition Client Digitale

Passionné par le web depuis toujours, j'aide les entreprises à acquérir des clients grâce au digital. Sites web, applications, SEO : je transforme vos idées en solutions performantes.

En savoir plus

Services ONDEV liés à cet article

Création site internet Marseille•Application web sur-mesure•Refonte de site internet•Expert Next.js Marseille•Agence web à Marseille•Nos réalisations

Besoin d'aide pour votre projet ?

Discutons de vos objectifs et voyons comment je peux vous aider à les atteindre.

Prendre rendez-vousAppelerWhatsApp