Pular para conteúdo

0004 — Login Firebase para administradores e usuários de apps terceiros

Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-06-30 · Decidido em: 2026-04-15

Contexto

Além do login pAbast (usuário do ERP), há duas audiências que autenticam por Google/Firebase: a equipe xadm (que opera a área administrativa) e usuários finais de apps terceiros que não têm credencial pAbast.

Decisão

Validar o Firebase ID Token (pelo JWKS público do Google) em dois endpoints:

  • POST /api/auth/firebase/login — exclusivo para @xadm.com.br; emite JWT com xadm_admin=true (scope=admin). E-mail de outro domínio → 403.
  • POST /api/auth/firebase/client-login — para usuários de app terceiro; exige cliente com oauth_firebase em auth_methods e aprovação da equipe xadm (fila em oauth_access_requests, papéis USER/ADMIN). Sem aprovação, cria o pedido e retorna 403.

O FirebaseTokenValidator é lazy: sem AUTH_FIREBASE_PROJECT_ID, o bean não é registrado e os endpoints respondem 503 — o serviço roda sem Firebase.

Consequências

  • Reutiliza a infraestrutura Firebase existente, sem novo IdP.
  • O acesso de terceiros é moderado (request → approve/reject → role), com a fila administrada por /api/admin/oauth/firebase/requests.
  • Tokens Firebase > 8 KB são rejeitados de imediato (400).

Alternativas consideradas

  • Usuário admin em db_auth: mais operação sem ganho de segurança. Descartado.
  • Usar o JWT pAbast para admin: o scope não distingue admin de usuário. Descartado.