Supabase: egen OIDC-leverandør med Dazr Identity

Du trenger tre verdier fra utviklerkonsollen: klient-ID-en, klienthemmeligheten (bare apper med webserver) og omdirigerings-URI-en du registrerte. Resten står i discovery-dokumentet på https://identity.dazr.eu/.well-known/openid-configuration.

Supabase Auth støtter egne OAuth- og OpenID Connect-leverandører. Legg til Dazr Identity som en av dem, så logger brukerne dine inn i Supabase-prosjektet ditt med en passnøkkel, en e-postkode eller Google- eller Microsoft-kontoen sin, via én knapp.

1. Registrer en app i Dazr Identity

Registrer en app med webserver i Dazr Identity → Utviklere. Bruk callback-URL-en som Supabase viser når du legger til leverandøren, som omdirigerings-URI. For et prosjekt som Supabase drifter, er den https://<project-ref>.supabase.co/auth/v1/callback. Ta vare på klient-ID-en og klienthemmeligheten til neste trinn.

2. Legg til leverandøren i Supabase

Åpne Auth-leverandørene for prosjektet ditt i Supabase-dashbordet, klikk på New Provider og velg Auto-discovery (OIDC). Fyll inn disse verdiene, og klikk deretter på Create and enable provider.

InnstillingVerdi
Identifiercustom:dazr
Klient-IDklient-ID-en din
Klienthemmelighetklienthemmeligheten din
Issuer-URLhttps://identity.dazr.eu
Scopesopenid profile email

Supabase leser discovery-dokumentet på https://identity.dazr.eu/.well-known/openid-configuration og kontrollerer hvert ID-token mot de offentlige nøklene som står der. PKCE er slått på som standard. La det være på: Dazr Identity avviser innlogging uten PKCE.

Du kan også opprette leverandøren i kode, på en server, med Supabase Admin API:

// 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. Logg inn brukere

Start innloggingen med identifieren til leverandøren. Supabase tar seg av omdirigeringen til Dazr Identity, PKCE og callbacken, og oppretter deretter brukeren eller logger inn den eksisterende.

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

Gi knappen utseendet som er beskrevet under Knappen. Row level security virker som vanlig: den innloggede personen har en vanlig bruker-ID i Supabase.

Greit å vite

Mer for utviklere