Úselo cuando: Una aplicación que debe conocer a la persona antes de intercambiar el código (validación de sesión en el servidor, bibliotecas antiguas).
Lo que lo distingue: Como el flujo de código, pero el ID token llega directamente en la redirección (con c_hash que lo vincula al código).
private_key_jwt y JWT Bearer (RFC 7523) En ID-Kit: proveedor de pruebas
El cliente prueba su identidad con un JWT firmado por su clave privada, en lugar de con un secreto compartido.
Versión en texto del diagrama
Servicio: Firma un JWT (iss, sub, aud, exp, jti)
Servicio → Proveedor (OP) : POST /token (client_assertion, client_assertion_type)
Proveedor (OP): Verifica la firma con la clave pública del cliente
Proveedor (OP) → Servicio : access token
Úselo cuando: Banca, sanidad, API sensibles, integraciones empresariales: ningún secreto que almacenar ni rotar.
Lo que lo distingue: El mismo intercambio que client credentials, pero la autenticación es una aserción firmada (client_assertion).
ID-Kit puede hacerlo en el lado del proveedor de pruebas (declare la clave pública de su cliente, tipo «Confidencial por clave»). Todavía no del lado de la aplicación de pruebas.
PAR y JAR (RFC 9126 y 9101) En ID-Kit
La solicitud de autorización se envía de servidor a servidor, en lugar de pasar en claro por la dirección.
Versión en texto del diagrama
Aplicación → Proveedor (OP): POST /par (todos los parámetros, firmados)
Proveedor (OP) → Aplicación : request_uri (válido unos segundos)
Aplicación → Navegador : 302 a /authorize?request_uri=…
Navegador → Proveedor (OP) : GET /authorize?request_uri=…
Proveedor (OP) → Navegador: Inicio de sesión y luego redirección con el código
Úselo cuando: Exigencias de FAPI: impedir que un parámetro se modifique o se lea en el navegador.
Lo que lo distingue: El navegador solo transporta un request_uri opaco.
JARM (respuesta de autorización firmada) En ID-Kit (proveedor de pruebas)
El proveedor también firma su respuesta: el código llega en un JWT, no en claro en la dirección.
Versión en texto del diagrama
Aplicación → Navegador : 302 a /authorize?response_mode=jwt
Navegador → Proveedor (OP) : GET /authorize y luego inicio de sesión
Proveedor (OP): Firma un JWT { iss, aud, code, state }
Proveedor (OP) → Navegador : Redirección a la aplicación ?response=JWT
Navegador → Aplicación : Reenvía la respuesta
Aplicación: Verifica la firma, iss, aud y luego lee el código
Úselo cuando: FAPI 2.0, sectores regulados, protección contra los ataques mix-up entre proveedores.
Lo que lo distingue: Un único parámetro «response» (JWT firmado con iss, aud, exp, code, state) sustituye a los parámetros simples.
ID-Kit puede hacerlo en el lado del proveedor de pruebas (declare la clave pública de su cliente, tipo «Confidencial por clave»). Todavía no del lado de la aplicación de pruebas.
DPoP (RFC 9449) En ID-Kit (proveedor de pruebas)
El token está vinculado a una clave que solo posee el cliente: un token robado es inutilizable.
Proveedor (OP) → Aplicación: access token vinculado a una clave (cnf.jkt)
Aplicación → API : Authorization: DPoP token + nueva prueba DPoP
API: Verifica la prueba y el vínculo con la clave
Úselo cuando: Alta seguridad, SPA expuestas, API sensibles.
Lo que lo distingue: Cada llamada va acompañada de una prueba firmada (cabecera DPoP) que demuestra la posesión de la clave.
ID-Kit puede hacerlo en el lado del proveedor de pruebas (declare la clave pública de su cliente, tipo «Confidencial por clave»). Todavía no del lado de la aplicación de pruebas.
CIBA (Client-Initiated Backchannel) En ID-Kit (proveedor de pruebas)
La autenticación se realiza en el dispositivo de la persona, iniciada por el servidor.
Versión en texto del diagrama
Aplicación → Proveedor (OP) : POST /bc-authorize (login_hint, binding_message)
Proveedor (OP) → Aplicación : auth_req_id
Proveedor (OP) → Teléfono: Notificación: «¿Autoriza este pago?»
Teléfono → Proveedor (OP): La persona acepta
Aplicación → Proveedor (OP): POST /token (auth_req_id) en bucle, o callback
Proveedor (OP) → Aplicación : Tokens
Úselo cuando: Centros de llamadas, bancos, confirmación de pagos por notificación.
Lo que lo distingue: Sin redirección del navegador: el proveedor contacta directamente con la persona.
ID-Kit puede hacerlo en el lado del proveedor de pruebas (declare la clave pública de su cliente, tipo «Confidencial por clave»). Todavía no del lado de la aplicación de pruebas.