Docs

Guía: identificar a usuarios con sesión iniciada

Permite que el navegador, la app o el centro de preferencias alojado actúen por una persona identificada — de forma segura — con tokens de identidad.

Una clave publicable (pk_) vive en tu página o app, así que cualquiera puede copiarla. Por sí sola solo alcanza a visitantes anónimos — el id de dispositivo que generan el CMP y los SDKs. Para leer o escribir a una persona identificada (email:, external_id:, phone:, custom:) desde el navegador o una app, la petición lleva además un token de identidad: una declaración firmada y de corta duración de tu backend que dice "este visitante es external_id:u_42".

Sin token, esas llamadas devuelven 403 identity_token_required. Los ids de dispositivo anónimos siguen funcionando igual, y las claves secretas (sk_) no se ven afectadas.

1. Crea un secreto de identidad

Consola → Integrate → Identity tokens → Create identity secret (solo administradores). Copia el secreto isec_… y su id (kid) en la configuración de tu servidor, como una clave sk_. Puedes tener dos secretos activos a la vez para rotar sin cortes; revocar uno invalida al instante todos los tokens firmados con él.

2. Firma un token en tu servidor tras el login

import { signIdentityToken } from '@tripticonsent/sdk/server';

const identityToken = await signIdentityToken({
  secret: process.env.TC_IDENTITY_SECRET,   // isec_…
  secretId: process.env.TC_IDENTITY_KID,
  siteId: process.env.TC_SITE_ID,
  subject: `external_id:${user.id}`,     // mejor un id estable que un email
  // ttlSeconds: 3600 (por defecto), máximo 24 h
});

¿No usas Node? Es un JWT HS256 estándar: cabecera { "alg": "HS256", "typ": "JWT", "kid": "<id del secreto>" }, payload { "sub": "external_id:u_42", "site": "<id del sitio>", "aud": "tripticonsent:identity", "iat": <ahora>, "exp": <ahora + ≤ 86400> }, firmado con el secreto. Sirve cualquier librería JWT.

3. Pásalo

  • Banner de cookies (CMP): cmp.identify('external_id:u_42', identityToken) justo después del login, o data-tc-subject + data-tc-identity-token en la etiqueta script de una página renderizada en servidor. Al cerrar sesión: cmp.identify(cmp.getDeviceId()).
  • SDK de JavaScript: new TripticonsentClient({ apiKey: 'pk_live_…', identityToken }) o tc.setIdentityToken(token).
  • iOS / Android / Flutter: la opción identityToken o setIdentityToken(…). La clave de la app debe tener activado Allow native apps — las apps no envían cabecera Origin.
  • API directa: envíalo en la cabecera X-Tc-Identity.
  • Plugin de WordPress: sin código — Ajustes → Tripticonsent → Logged-in visitors. El plugin firma el token en el servidor y el banner lo obtiene de un endpoint sin caché, así que las páginas cacheadas nunca llevan el token de nadie. Otros CMS pueden hacer lo mismo con data-tc-identity-endpoint del CMP (una URL del mismo origen que devuelve { subject, identityToken, expiresIn }, o 204 sin sesión).

Enlaces al centro de preferencias por correo

El centro de preferencias alojado recibe el token en el enlace, así que solo el destinatario puede abrirlo: firma con use: 'prefs' (hasta 30 días) y enlaza a https://tripticonsent.tripticode.com/es/prefs?pk=<pk_…>&it=<token>. Un enlace caducado o manipulado muestra una página de "enlace caducado".

const it = await signIdentityToken({ ...config, subject: `external_id:${user.id}`, use: 'prefs', ttlSeconds: 14 * 86400 });
Mantén los tokens de corta duración y nunca pongas el secreto en código de cliente. Un token solo responde por la persona de su sub — no alcanza a nadie más y está ligado a tu sitio.