Pular para o conteúdo principal

Autenticação

A Ishtaran tem três principals de autenticação separados. Eles autenticam atores diferentes, carregam escopos diferentes, e nunca são intercambiáveis — uma credencial válida para um é rejeitada de cara pelas rotas que exigem outro.

1. Application API Key

O que é: uma credencial machine-to-machine, uma por Environment (sandbox/production), gerada via POST /v1/environments/{environmentId}/api-keys. Veja Organization, Application e Environment para como ela é escopada.

Como enviar: o header HTTP X-Api-Key.

Quem representa: seu backend, não uma pessoa. É a credencial que quase todo exemplo de código neste site usa — é o que IshtaranClient.create({ apiKey: ... }) (ou o construtor equivalente em cada SDK) recebe.

Nunca coloque em código de frontend ou mobile. É uma credencial bearer com todas as permissões do seu Environment — trate exatamente como uma senha de banco de dados, injetada só no lado do servidor.

2. Member JWT

O que é: o token de sessão de um usuário humano da sua Organization (alguém com login no control plane da plataforma), obtido via POST /v1/auth/login.

Como enviar: o header padrão Authorization: Bearer <token>.

Quem representa: uma pessoa, para operações de control plane e algumas operações especificamente restritas. Um punhado de rotas exige explicitamente uma sessão de Member e rejeita uma API Key mesmo que uma seja fornecida — por exemplo accounts.authorizeApplication/freeze/unfreeze/close/revokeRelationship, e gerenciar WebhookEndpoints (Permissions.WebhookEndpointManage, veja Webhooks § Configuração). Se a página de referência de uma rota não disser que API Key funciona, presuma que ela precisa de um Member JWT.

3. AccountHolder JWT

O que é: o token de sessão do seu cliente final — a pessoa que a plataforma chama de AccountHolder, não a equipe da sua própria Organization. Obtido via accountHolders.signUp/login, ou via signUpAndClaimInvitation ao aceitar um convite para um relacionamento de AccountHolder já existente.

Quem representa: um indivíduo com identidade própria, isolado do contexto de Member/API Key da sua Organization. Este é um contexto de autenticação terceiro e independente — nunca derivado de, ou conversível para, uma API Key ou um Member JWT, e o token de sessão dele nunca é compartilhado com client.auth (Member) na mesma instância do client, mesmo dentro do mesmo processo do SDK.

Use isso quando seus usuários finais precisarem agir por conta própria (ex.: ver o próprio saldo, aceitar um convite) em vez de agir através do seu backend em nome deles via API Key.

Resumo

API Key != Member JWT != AccountHolder JWT
(seu backend) (sua equipe) (seu cliente final)

Nenhum dos três é um superconjunto do outro — cada um abre uma porta diferente, deliberadamente separada. Operações administrativas do Platform Owner (internas à Ishtaran) usam um quarto mecanismo totalmente à parte (rotas /v1/admin/*) que não faz parte da superfície de integração pública — veja Sandbox para o que está disponível a integradores no Sandbox.