Credencial e token do aplicativo
Como o SDK se autentica. Token do usuário logado para o painel, token do aplicativo para a conversa entre back-ends.
Toda função de rota que exige login recebe uma CredencialDeAcesso como primeiro argumento. Ela vira o cabeçalho Authorization: Bearer <token>. Rotas públicas não pedem credencial.
Existem dois jeitos de criar uma credencial:
| Quem chama | Como criar | Onde usar |
|---|---|---|
| Uma pessoa logada | CredencialDeAcesso.token_do_usuario_logado(token) | rotas de painel, em nome do usuário |
| O próprio app (back-end) | token_do_aplicativo() | APIs de sistema: gateway do TermoAI, arquivos do TermoBucket, publicação no TermoWebhook |
Token do usuário logado
O JWT que o TermoAuth entregou para o usuário, com ou sem o prefixo Bearer .
import { CredencialDeAcesso } from "termo_core";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(request.headers.authorization);A credencial não vaza em log: no TypeScript, JSON.stringify mostra CredencialDeAcesso(***).
Token do aplicativo (conversa entre back-ends)
Só no back-end. O app troca o segredo do app, gerado no TermoAuth, por um JWT curto em POST {TermoAuth}/token_de_app. O token fica em cache no processo e só é pedido de novo quando falta menos de 60 s para expira_em. Não existe tarefa em background.
Entregue o segredo ao SDK
Os apps guardam o segredo cifrado no próprio banco (tela /painel/configuracoes/provedores, só master) e o entregam ao subir e a cada gravação. A variável SEGREDO_DO_APP_GERADO_NO_TERMO_AUTH fica só como alternativa.
import { definir_segredo_do_app } from "termo_core";
definir_segredo_do_app(segredo_guardado_no_banco);Peça a credencial
import { token_do_aplicativo } from "termo_core";
const credencial_de_acesso = await token_do_aplicativo();Nunca no navegador
O segredo do app não pode ir para o frontend. Use token_do_aplicativo() só em código de servidor.
Sem segredo, token_do_aplicativo() devolve ErroAoChamarServico do tipo falha_ao_montar_requisicao (no Rust, FalhaAoMontarRequisicao) pedindo para cadastrá-lo. A fila de eventos do TermoWebhook espera até o segredo ser cadastrado.
Id do aplicativo
identificador_do_aplicativo() devolve o id do próprio app no TermoAuth (o app do token de aplicativo). É o mesmo id do app em todos os serviços, inclusive o destino das entregas do TermoWebhook.
Referência completa em Funções da base.