Skip to main content

Visão Geral

O SSO distribui autenticação para apps em outros domínios de duas formas: O browser envia o cookie eg_session (setado em .easygoal.com.br) naturalmente para todos os subdomínios — o SSO apenas replica o token para apps que não alcançam o cookie.

App Interno — Fluxo com eg_session

Setup mínimo:
O EgSessionProvider/api/auth/session (rota gerada pelo package) que retorna os claims do eg_session cookie.

App Externo — Fluxo com eg_token

Para apps em domínios externos (sem acesso ao cookie .easygoal.com.br):
Setup:
EG_API_KEY é usada server-side em POST /auth/verify. Nunca exponha como NEXT_PUBLIC_. Para apps que precisam iniciar o login via client, use apenas a URL pública do SSO — o api_key só é necessário no callback server-side.

Pré-requisitos para apps externos

  1. Produto registrado no SSO com status: approved
  2. URL do callback cadastrada em saas_products.redirect_urls
  3. API key ativa para o produto

Verificar sessão server-side

Para proteger rotas ou verificar autenticação em Server Components/middleware:
O /auth/check é ideal para middleware de proteção de rotas — não redireciona, apenas retorna JSON com { authenticated, session }.

Proteção de páginas admin via auth/check

Funcionalidade planejada. Para proteger páginas da documentação (ou qualquer app) exclusivamente para administradores, seria necessário adicionar is_super_admin ao EgSessionClaims no SSO. O campo existe em AuthUser do monorepo mas ainda não é injetado no eg_session JWT. Após essa adição, o middleware pode verificar session.is_super_admin === true via /auth/check.
Fluxo planejado:

Checklist de Integração

Produto registrado no SSO (apenas para apps externos)
URL do callback cadastrada em saas_products.redirect_urls
Callback route implementado com createCallbackRoute
EgSessionProvider adicionado ao layout raiz
URL do callback cadastrada em Supabase → Auth → Redirect URLs
Variáveis NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, NEXT_PUBLIC_SSO_URL configuradas