Autenticación
Intercambiar token
Intercambia un ID token OIDC de tu proveedor de identidad por un access token de Fire spark para el cliente autenticado.
POST
La API Storefront soporta OAuth 2.0 Token Exchange (RFC 8693) para clientes públicos. Tu app, web o kiosco envía el ID token OIDC del cliente y recibe a cambio un access token de Fire spark de corta duración.
No se requiere
Fire spark relaciona
client_id ni client_secret. Fire spark lee los claims iss y aud del ID token, encuentra el proveedor de identidad configurado para el comercio, valida el token contra el JWKS de ese proveedor y emite un access token ligado al cliente identificado por el claim sub.
Cuándo usar token exchange
Usa este endpoint cuando:- Los clientes inician sesión con un proveedor de identidad OIDC compatible en el cliente
- Tu canal necesita llamar a la API Storefront en nombre de ese cliente
- Quieres que Fire spark valide la identidad y limite el acceso a un solo customer
Requisitos previos
- Configura tu proveedor de identidad en el panel de Fire spark para tu comercio.
- Autentica al cliente en el dispositivo y obtén un ID token OIDC vigente de tu proveedor.
Cómo funciona
El cliente inicia sesión en el dispositivo
Tu app completa el sign-in con tu proveedor OIDC usando el SDK del proveedor.
Obtén el ID token que emite para la sesión autenticada.
El cliente envía el ID token
Tu cliente llama a
POST /auth/exchange con el ID token como
subject_token. No hace falta enviar merchant ID ni secret de API.Fire spark resuelve el comercio y valida el token
Fire spark relaciona el
iss y aud del token con el proveedor configurado
para un comercio, verifica la firma y expiración usando el JWKS de ese
proveedor, y usa sub como identificador externo del cliente.Obtener el ID token
Cada proveedor expone el ID token a través de su SDK de cliente. Usa el método que devuelve el JWT ID token de la sesión actual.- Auth0
- Clerk
- Supabase
- Firebase
- Amazon Cognito
- Okta
Solicitud de token exchange
Envía una solicitudPOST a /auth/exchange con Content-Type: application/json. El cuerpo de la solicitud es el mismo sin importar el proveedor.
Cuerpo de la solicitud
| Campo | Requerido | Descripción |
|---|---|---|
grant_type | Sí | Debe ser urn:ietf:params:oauth:grant-type:token-exchange. |
subject_token | Sí | El ID token OIDC de tu proveedor de identidad para el cliente autenticado. |
subject_token_type | Sí | Debe ser urn:ietf:params:oauth:token-type:id_token. No se aceptan access tokens opacos. |
Cómo Fire spark identifica al comercio
Fire spark no requiere un merchant ID en la solicitud. Inspecciona los claims del ID token:| Claim | Propósito |
|---|---|
iss | Identifica la URL del issuer del proveedor de identidad. |
aud | Identifica el proyecto, realm o app client del proveedor. |
sub | Identificador estable del cliente usado para resolver o crear el registro del customer. |
iss y aud con la configuración del proveedor registrada para un comercio y valida la firma del token antes de emitir un access token.
Proveedores soportados
Cualquier proveedor OIDC compatible que emita JWT ID tokens con un endpoint JWKS descubrible es compatible. Registra el proveedor en el panel antes de ir a producción.| Proveedor | Formato típico de iss | Cómo obtener el ID token |
|---|---|---|
| Auth0 | https://{tenant}.auth0.com/ | getIdTokenClaims().__raw |
| Clerk | https://{your-clerk-domain} | getToken() |
| Supabase | https://{project-ref}.supabase.co/auth/v1 | getSession().access_token |
| Firebase | https://securetoken.google.com/{projectId} | getIdToken() |
| Amazon Cognito | https://cognito-idp.{region}.amazonaws.com/{userPoolId} | fetchAuthSession().tokens.idToken |
| Okta | https://{okta-domain}/oauth2/{authorizationServerId} | tokenManager.get("idToken") |
| Keycloak | https://{host}/realms/{realm} | keycloak.idToken |
Los valores de
iss y aud deben coincidir exactamente con lo que Fire spark
tiene registrado para tu comercio. Cópialos de un ID token decodificado al
configurar el proveedor en el panel.Usar el token intercambiado
Incluye el access token de Fire spark en el headerAuthorization. El token solo permite acceder a recursos del cliente vinculado al claim sub original.
Vuelve a intercambiar cuando tu proveedor refresque el ID token. Los access
tokens de Fire spark son de corta duración y no reemplazan mantener vigente la
sesión del IdP.
Propiedades de seguridad
- Perfil de cliente público: Pensado para clientes mobile y web. No se envían ni almacenan credenciales confidenciales en la app.
- Solo ID token: Solo se aceptan JWT ID tokens OIDC como
subject_token. Se rechazan tokens opacos o API tokens del proveedor. - Validación criptográfica: Se verifican firma,
iss,audyexpcontra el proveedor registrado del comercio antes de devolver datos del cliente. - Aislamiento por cliente: El access token emitido está ligado al
subdel ID token. Las solicitudes para otros clientes se rechazan. - Tokens de corta duración: Los tokens intercambiados expiran tras
expires_insegundos.
Respuestas de error
Los errores siguen RFC 6749 y RFC 8693. El endpoint devuelveapplication/json con un campo error.
| Error | Descripción |
|---|---|
invalid_request | Falta un campo requerido o está mal formado. |
invalid_grant | El ID token es inválido, expiró o no coincide con ningún proveedor registrado para un comercio. |
unsupported_grant_type | El valor de grant_type no es compatible. |
Error