Supabase: eigener OIDC-Provider mit Dazr Identity

Sie brauchen drei Werte aus der Entwicklerkonsole: die Client-ID, das Client-Secret (nur für Webserver-Apps) und die registrierte Weiterleitungs-URI. Alles Weitere steht im Discovery-Dokument unter https://identity.dazr.eu/.well-known/openid-configuration.

Supabase Auth unterstützt eigene OAuth- und OpenID-Connect-Provider. Fügen Sie Dazr Identity als solchen hinzu, und Ihre Nutzer melden sich bei Ihrem Supabase-Projekt mit einem Passkey, einem E-Mail-Code oder ihrem Google- oder Microsoft-Konto an, über einen einzigen Button.

1. Eine App in Dazr Identity registrieren

Registrieren Sie in Dazr Identity → Entwickler eine Webserver-App. Tragen Sie als Weiterleitungs-URI die Callback-URL ein, die Supabase beim Hinzufügen des Providers anzeigt. Bei einem von Supabase gehosteten Projekt lautet sie https://<project-ref>.supabase.co/auth/v1/callback. Notieren Sie Client-ID und Client-Secret für den nächsten Schritt.

2. Den Provider in Supabase hinzufügen

Öffnen Sie im Supabase-Dashboard die Auth-Provider Ihres Projekts, klicken Sie auf New Provider und wählen Sie Auto-discovery (OIDC). Tragen Sie diese Werte ein und klicken Sie dann auf Create and enable provider.

EinstellungWert
Identifiercustom:dazr
Client-IDIhre Client-ID
Client-SecretIhr Client-Secret
Issuer-URLhttps://identity.dazr.eu
Scopesopenid profile email

Supabase liest das Discovery-Dokument unter https://identity.dazr.eu/.well-known/openid-configuration und prüft jedes ID-Token mit den dort genannten öffentlichen Schlüsseln. PKCE ist standardmäßig aktiviert. Lassen Sie es aktiviert: Dazr Identity lehnt Anmeldungen ohne PKCE ab.

Sie können den Provider auch per Code anlegen, auf einem Server, mit der Admin-API von 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. Personen anmelden

Starten Sie die Anmeldung mit dem Identifier des Providers. Supabase übernimmt die Weiterleitung zu Dazr Identity, PKCE und den Callback und legt dann den Nutzer an oder meldet den bestehenden an.

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

Gestalten Sie den Button wie unter Der Button beschrieben. Row Level Security funktioniert wie gewohnt: Die angemeldete Person hat eine normale Supabase-Nutzer-ID.

Gut zu wissen

Mehr für Entwickler