Supabase: fornecedor OIDC próprio com o Dazr Identity

Precisa de três valores da consola para programadores: o ID de cliente, o segredo de cliente (apenas aplicações de servidor web) e o URI de redirecionamento que registou. O resto está no documento de descoberta em https://identity.dazr.eu/.well-known/openid-configuration.

O Supabase Auth suporta fornecedores OAuth e OpenID Connect próprios. Adicione o Dazr Identity como um deles, e os seus utilizadores iniciam sessão no seu projeto Supabase com uma passkey, um código por e-mail ou a conta Google ou Microsoft, a partir de um só botão.

1. Registe uma aplicação no Dazr Identity

Em Dazr Identity → Programadores, registe uma aplicação de servidor web. Como URI de redirecionamento, use o URL de callback que o Supabase mostra ao adicionar o fornecedor. Num projeto alojado pelo Supabase é https://<project-ref>.supabase.co/auth/v1/callback. Guarde o ID de cliente e o segredo de cliente para o passo seguinte.

2. Adicione o fornecedor no Supabase

No painel do Supabase, abra os fornecedores Auth do seu projeto, clique em New Provider e escolha Auto-discovery (OIDC). Preencha estes valores e clique em Create and enable provider.

DefiniçãoValor
Identifiercustom:dazr
ID de clienteo seu ID de cliente
Segredo de clienteo seu segredo de cliente
URL do emissor (Issuer URL)https://identity.dazr.eu
Âmbitosopenid profile email

O Supabase lê o documento de descoberta em https://identity.dazr.eu/.well-known/openid-configuration e verifica cada token de ID com as chaves públicas que ele indica. O PKCE está ativo por predefinição. Mantenha-o ativo: o Dazr Identity recusa inícios de sessão sem PKCE.

Também pode criar o fornecedor por código, num servidor, com a Admin API do 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. Inicie a sessão das pessoas

Inicie o acesso com o identificador do fornecedor. O Supabase trata do redirecionamento para o Dazr Identity, do PKCE e do callback, e depois cria o utilizador ou inicia a sessão do existente.

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

Dê ao botão o estilo descrito em O botão. A row level security funciona como sempre: a pessoa com sessão iniciada tem um ID de utilizador normal do Supabase.

Bom saber

Mais para programadores