Supabase: provider OIDC personalizzato con Dazr Identity

Le servono tre valori dalla console per sviluppatori: il client ID, il client secret (solo per le app web server) e l’URI di reindirizzamento registrato. Tutto il resto è nel documento di discovery all’indirizzo https://identity.dazr.eu/.well-known/openid-configuration.

Supabase Auth supporta provider OAuth e OpenID Connect personalizzati. Aggiunga Dazr Identity come uno di questi, e i Suoi utenti accedono al Suo progetto Supabase con una passkey, un codice via email o il loro account Google o Microsoft, da un solo pulsante.

1. Registri un’app in Dazr Identity

In Dazr Identity → Sviluppatori, registri un’app web server. Come URI di reindirizzamento usi l’URL di callback che Supabase mostra quando aggiunge il provider. Per un progetto ospitato da Supabase è https://<project-ref>.supabase.co/auth/v1/callback. Tenga il client ID e il client secret per il passo successivo.

2. Aggiunga il provider in Supabase

Nella dashboard di Supabase, apra i provider Auth del Suo progetto, faccia clic su New Provider e scelga Auto-discovery (OIDC). Inserisca questi valori, poi faccia clic su Create and enable provider.

ImpostazioneValore
Identifiercustom:dazr
Client IDil Suo client ID
Client secretil Suo client secret
URL dell’issuerhttps://identity.dazr.eu
Scopeopenid profile email

Supabase legge il documento di discovery all’indirizzo https://identity.dazr.eu/.well-known/openid-configuration e verifica ogni ID token con le chiavi pubbliche che vi sono elencate. PKCE è attivo per impostazione predefinita. Lo lasci attivo: Dazr Identity rifiuta gli accessi senza PKCE.

Può anche creare il provider via codice, su un server, con l’Admin API di Supabase:

// Server only: this client uses the service role key.
const { data, error } = await supabase.auth.admin.customProviders.createProvider({
  provider_type: 'oidc',
  identifier: 'custom:dazr',
  name: 'Dazr Identity',
  client_id: process.env.DAZR_CLIENT_ID,
  client_secret: process.env.DAZR_CLIENT_SECRET,
  issuer: 'https://identity.dazr.eu',
  scopes: ['openid', 'profile', 'email'],
})

3. Faccia accedere le persone

Avvii l’accesso con l’identifier del provider. Supabase gestisce il reindirizzamento a Dazr Identity, PKCE e la callback, poi crea l’utente o fa accedere quello esistente.

const { data, error } = await supabase.auth.signInWithOAuth({
  provider: 'custom:dazr',
  options: { redirectTo: 'https://app.example.eu/auth/callback' },
})

Dia al pulsante lo stile descritto in Il pulsante. La row level security funziona come sempre: la persona che ha effettuato l’accesso ha un normale ID utente Supabase.

Buono a sapersi

Altro per gli sviluppatori