Credenciales vs tokens — la distinción clave
Una confusión común en SSI: ¿qué diferencia hay entre una credencial verificable y un token OAuth? Ambos son JWTs firmados que se presentan a verifiers. La distinción importa.
La diferencia conceptual
| Token | Credencial Verificable | |
|---|---|---|
| Propósito | Autorizar una operación específica | Atestiguar un hecho sobre alguien |
| Vida útil | Corta (minutos a horas) | Larga (días, meses, años) |
| Firmante | Authorization Server | Issuer reconocido (gob, universidad) |
| Recipient | Resource Server específico | Holder (a presentar a múltiples verifiers) |
| Reusable | Generalmente no | Sí, múltiples presentaciones |
El token OAuth típico
Un access token OAuth tiene:
- Vida muy corta (típicamente 5-60 minutos).
- Permisos específicos ("acceso a recurso X").
- Generado en el momento de la solicitud.
- No reusable entre diferentes recursos.
- Sin atributos del usuario (o muy mínimos).
Es un billete de un solo uso: te deja entrar una vez a un servicio específico.
La credencial verificable
Una credencial verificable tiene:
- Vida larga (semanas, meses, años).
- Atributos sobre el subject ("tiene tal título").
- Generada en momento del hecho (cuando se graduó, cuando renovó licencia).
- Reusable ante múltiples verifiers.
- Selective disclosure posible.
Es un documento de identidad/atestiguamiento: vale en muchos contextos.
Cuándo usar cada uno
| Caso | ¿Token o Credencial? |
|---|---|
| Login a un servicio web | Token (OIDC) |
| Acceso a API por aplicación | Token OAuth |
| Probar quién soy a múltiples verifiers | Credencial |
| Demostrar título académico | Credencial |
| Acceder a recursos efímeros | Token |
| Identidad ciudadana base | Credencial |
En SSI específicamente
Un sistema SSI usa AMBOS:
- 1Cuando el ciudadano se loguea a la wallet: token de sesión (corto).
- 2Cuando recibe credencial: verifiable credential (larga).
- 3Cuando presenta credencial: Verifiable Presentation envuelta en flow OID4VP (que usa OAuth + tokens cortos para el flow).
OID4VC reusa la infraestructura OAuth para el flow, pero las credenciales son cosa distinta.
La capa adicional: identidad del holder
Una diferencia conceptual clave:
- Token: identifica a quien lo presenta indirectamente (vía la sesión).
- Credencial: identifica explícitamente al subject (el holder), con su DID.
Esto es lo que permite que una credencial sea portable: el subject está identificado dentro de la credencial misma, no implícito en el contexto de uso.
Lo común: ambos son JWTs
Tanto tokens como credenciales modernas usan JWT (o variantes como SD-JWT VC). Esto explica por qué se confunden visualmente.
Pero las semánticas son distintas:
JWT como token:
payload: { user_id: 123, scope: "read:profile", exp: ... }
JWT como credential:
payload: { vct: "Diploma", iss: "did:web:uba.edu.ar", credentialSubject: { ... } }
Mismo formato, semánticas totalmente distintas.
Referencias
Relacionados
- W3C Verifiable Credentials Data Model 2.0 — el modelo de credencial
- JWS y JWT — formato estándar de firmas — el formato común
- OIDF — OpenID Foundation — el organismo que conecta ambos

