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 chamaComo criarOnde usar
Uma pessoa logadaCredencialDeAcesso.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.

Nesta página