Supabase: proveedor OIDC propio con Dazr Identity

Necesitas tres valores de la consola para desarrolladores: el ID de cliente, el secreto de cliente (solo apps de servidor web) y la URI de redirección que registraste. Todo lo demás está en el documento de descubrimiento en https://identity.dazr.eu/.well-known/openid-configuration.

Supabase Auth admite proveedores OAuth y OpenID Connect propios. Añade Dazr Identity como uno de ellos, y tus usuarios inician sesión en tu proyecto de Supabase con una passkey, un código por correo o su cuenta de Google o Microsoft, desde un solo botón.

1. Registra una app en Dazr Identity

En Dazr Identity → Desarrolladores, registra una app de servidor web. Como URI de redirección, usa la URL de callback que muestra Supabase al añadir el proveedor. En un proyecto alojado por Supabase es https://<project-ref>.supabase.co/auth/v1/callback. Guarda el ID de cliente y el secreto de cliente para el paso siguiente.

2. Añade el proveedor en Supabase

En el panel de Supabase, abre los proveedores Auth de tu proyecto, haz clic en New Provider y elige Auto-discovery (OIDC). Rellena estos valores y haz clic en Create and enable provider.

AjusteValor
Identifiercustom:dazr
Client IDtu client ID
Client secrettu client secret
URL del emisor (Issuer URL)https://identity.dazr.eu
Scopesopenid profile email

Supabase lee el documento de descubrimiento en https://identity.dazr.eu/.well-known/openid-configuration y comprueba cada token de ID con las claves públicas que indica. PKCE está activado por defecto. Déjalo activado: Dazr Identity rechaza los inicios de sesión sin PKCE.

También puedes crear el proveedor por código, en un servidor, con la Admin API de 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. Inicia la sesión de las personas

Inicia el acceso con el identificador del proveedor. Supabase se encarga de la redirección a Dazr Identity, de PKCE y del callback, y luego crea el usuario o inicia la sesión del existente.

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

Da al botón el estilo que se describe en El botón. La row level security funciona como siempre: la persona que inicia sesión tiene un ID de usuario normal de Supabase.

A tener en cuenta

Más para desarrolladores