Versionv1

Aplicações de página única não podem guardar client secret com segurança no navegador. Use o fluxo authorization code com PKCE, ou o pacote oficial @intastellar/signin-sdk-react se você usa React e o cliente está configurado para isso — o SDK usa popup e verificação em vez de você montar authorize + POST de token na mão.

Para padrões concretos em React e vanilla (só placeholders), veja Intastellar Sign-In — React e JavaScript.

Resumo do fluxo (código próprio + PKCE)

  1. Gere code_verifier (string aleatória de alta entropia) e derive code_challenge (S256).
  2. Guarde code_verifier onde possa lê-lo no callback — por exemplo sessionStorage na aba, ou cookie criptografado via um BFF pequeno.
  3. Redirecione para AUTHORIZATION_ENDPOINT com code_challenge / code_challenge_method=S256.
  4. No callback, envie code + code_verifier ao backend (recomendado) ou ao endpoint de token se o produto permitir clientes públicos sem secret (confirme no console).

Prefira um backend-for-frontend (BFF)

Mesmo num SPA, troca de token e refresh são mais seguros numa API mesma origem:

  • O navegador recebe só um cookie de sessão opaco da sua API.
  • Refresh tokens não passam por localStorage.
  • CORS e CSRF ficam mais fáceis de controlar no seu domínio.

Se precisar tratar tokens inteiramente no navegador, minimize a validade, evite localStorage para refresh tokens e trate XSS como comprometimento total da sessão.

CORS e iframes

Não embuta a UI de login da Intastellar em iframe oculto salvo se o produto der suporte explícito a fluxos silenciosos ou embutidos. Prefira redirect de página inteira para entrar e sair.

Perguntas frequentes

O popup React é a mesma coisa que redirect com PKCE?

Não. O caminho popup do SDK é outro estilo de integração. Esta página trata de redirect + PKCE quando você monta o fluxo você mesmo.

“Erro de CORS” ao chamar o endpoint de token via JavaScript

Muitas vezes é esperado — vários endpoints de token não são feitos para serem chamados direto do navegador. Use seu backend ou um BFF.

Próximo

Clientes no servidor (confidenciais) se você também roda um backend tradicional com secret.

Last updated