Supabase: egen OIDC-leverantör med Dazr Identity

Du behöver tre värden från utvecklarkonsolen: klient-id:t, klienthemligheten (bara webbserverappar) och den omdirigerings-URI du registrerade. Resten finns i discovery-dokumentet på https://identity.dazr.eu/.well-known/openid-configuration.

Supabase Auth stöder egna OAuth- och OpenID Connect-leverantörer. Lägg till Dazr Identity som en av dem, så loggar dina användare in i ditt Supabase-projekt med en nyckel (passkey), en e-postkod eller sitt Google- eller Microsoft-konto, via en enda knapp.

1. Registrera en app i Dazr Identity

Registrera en webbserverapp i Dazr Identity → Utvecklare. Använd callback-URL:en som Supabase visar när du lägger till leverantören som omdirigerings-URI. För ett projekt som Supabase driftar är det https://<project-ref>.supabase.co/auth/v1/callback. Spara klient-id:t och klienthemligheten till nästa steg.

2. Lägg till leverantören i Supabase

Öppna projektets Auth-leverantörer i Supabase-instrumentpanelen, klicka på New Provider och välj Auto-discovery (OIDC). Fyll i de här värdena och klicka sedan på Create and enable provider.

InställningVärde
Identifiercustom:dazr
Klient-idditt klient-id
Klienthemlighetdin klienthemlighet
Issuer-URLhttps://identity.dazr.eu
Scopesopenid profile email

Supabase läser discovery-dokumentet på https://identity.dazr.eu/.well-known/openid-configuration och kontrollerar varje ID-token mot de publika nycklar som anges där. PKCE är aktiverat som standard. Låt det vara på: Dazr Identity avvisar inloggningar utan PKCE.

Du kan också skapa leverantören i kod, 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. Logga in användare

Starta inloggningen med leverantörens identifier. Supabase sköter omdirigeringen till Dazr Identity, PKCE och callbacken och skapar sedan användaren eller loggar in den befintliga.

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

Ge knappen det utseende som beskrivs under Knappen. Row level security fungerar som vanligt: den inloggade personen har ett vanligt användar-id i Supabase.

Bra att veta

Mer för utvecklare