Saltar al contenido principal

Autenticación

Ishtaran tiene tres principals de autenticación separados. Autentican actores distintos, llevan alcances distintos, y nunca son intercambiables — una credencial válida para uno es rechazada de inmediato por las rutas que exigen otro.

1. Application API Key

Qué es: una credencial machine-to-machine, una por Environment (sandbox/production), generada vía POST /v1/environments/{environmentId}/api-keys. Ver Organization, Application y Environment para cómo se delimita.

Cómo enviarla: el header HTTP X-Api-Key.

A quién representa: tu backend, no una persona. Es la credencial que casi todo ejemplo de código de este sitio usa — es lo que IshtaranClient.create({ apiKey: ... }) (o el constructor equivalente en cada SDK) recibe.

Nunca la pongas en código de frontend o mobile. Es una credencial bearer con todos los permisos de su Environment — trátala exactamente como una contraseña de base de datos, inyectada solo del lado del servidor.

2. Member JWT

Qué es: el token de sesión de un usuario humano de tu Organization (alguien con login en el control plane de la plataforma), obtenido vía POST /v1/auth/login.

Cómo enviarlo: el header estándar Authorization: Bearer <token>.

A quién representa: una persona, para operaciones de control plane y algunas operaciones específicamente restringidas. Un puñado de rutas exige explícitamente una sesión de Member y rechaza una API Key aunque se proporcione una — por ejemplo accounts.authorizeApplication/freeze/unfreeze/close/revokeRelationship, y gestionar WebhookEndpoints (Permissions.WebhookEndpointManage, ver Webhooks § Configuración). Si la página de referencia de una ruta no dice que la API Key funciona, asume que necesita un Member JWT.

3. AccountHolder JWT

Qué es: el token de sesión de tu cliente final — la persona que la plataforma llama AccountHolder, no el staff de tu propia Organization. Obtenido vía accountHolders.signUp/login, o vía signUpAndClaimInvitation al aceptar una invitación a una relación de AccountHolder ya existente.

A quién representa: un individuo con identidad propia, aislado del contexto de Member/API Key de tu Organization. Este es un contexto de autenticación tercero e independiente — nunca derivado de, ni convertible a, una API Key o un Member JWT, y su token de sesión nunca se comparte con client.auth (Member) en la misma instancia del client, incluso dentro del mismo proceso del SDK.

Úsalo cuando tus usuarios finales necesiten actuar por su cuenta (ej.: ver su propio saldo, aceptar una invitación) en vez de actuar a través de tu backend en su nombre vía API Key.

Resumen

API Key != Member JWT != AccountHolder JWT
(tu backend) (tu equipo) (tu cliente final)

Ninguno de los tres es un superconjunto del otro — cada uno abre una puerta distinta, deliberadamente separada. Las operaciones administrativas del Platform Owner (internas a Ishtaran) usan un cuarto mecanismo totalmente aparte (rutas /v1/admin/*) que no forma parte de la superficie de integración pública — ver Sandbox para lo que está disponible a integradores en Sandbox.