OAuth 2.0 en Profundidad: Flujos, Tokens y Seguridad
Roles, endpoints, Authorization Code con PKCE, Client Credentials, refresh tokens, introspección, revocación y prácticas modernas de protección
Edición en profundidad - material de estudio y consulta profesional
Por João Ricardo Dutra••Material íntegro
Delegación 2.0: autorización sin compartir la contraseña del usuario
Figura de apertura: delega autoridad limitada sin convertir al cliente en el propietario de las credenciales del usuario.
Principio central
Al cliente se le otorga autoridad limitada para acceder a una ; La autenticación de usuario y la autorización de siguen siendo decisiones independientes.
Edición en profundidad: material de estudio y consulta profesional.
Presentación del capítulo
Los capítulos anteriores separaron identidad, autenticación, autorización y credenciales estáticas. Ahora el curso profundiza en el marco 2.0, creado para permitir a un cliente obtener autoridad limitada para acceder a un recurso protegido. La idea central es reemplazar el intercambio directo de credenciales con artefactos temporales, con audience, , duración y contexto controlados.
2.0 no es un protocolo único y cerrado. Es una familia de roles, , grants, tipos de clientes, formatos de y extensiones. La seguridad de un despliegue depende de la correcta composición de estos elementos. Un flujo de puede ser sólido cuando utiliza , de redireccionamiento estricto y protección de , pero puede ser vulnerable cuando acepta redirecciones amplias, mezcla issuers o expone códigos y en registros.
La especificación original sigue siendo importante, pero la práctica moderna también se guía por documentos posteriores. Las mejores prácticas actuales de seguridad consolidan experiencias operativas, desaconsejan modos inseguros y refuerzan , redirect exacto, protección contra mix-up, restricción de y defensa de . Extensiones como , , RAR, , , metadata de recursos y abordan escenarios de mayor riesgo e integraciones corporativas.
Este capítulo recorre el ciclo completo: registro de cliente, solicitud de autorización, emisión y uso de , renovación, revocación, introspección, delegación entre servicios y aplicación en . El objetivo es permitir al lector diseñar y diagnosticar flujos reales sin confundir la autenticación de usuario, la autenticación de cliente, el consentimiento, la autorización de recursos y la validación de .
Estado de la especificación
2.1 seguirá siendo un borrador de Internet en 2026. Consolida las prácticas modernas, pero no reemplaza automáticamente los publicados. Para decisiones regulatorias, utilice los actuales y las mejores prácticas actuales de seguridad de 2.0, consultando la versión preliminar actual solo para obtener orientación adicional.
Objetivos de aprendizaje
Explique el problema de delegación resuelto por 2.0 y sus límites.
Distinga propietario de recursos, cliente, y .
Diferenciar de autorización, de , introspección, revocación y metadata.
Clasifique clientes públicos y confidenciales y elija una autenticación compatible con su capacidad para proteger claves.
Describir el con y los controles de estado, , issuer y de redireccionamiento.
Aplique , Device Authorization y en escenarios apropiados.
Distinga grants, códigos, , y de identificación.
Diseñar , audiences, indicadores de recursos, consentimiento y autorización detallada.
Comprenda los opacos, los , la introspección, la revocación y los perfiles de .
Aplicar , , , RAR, , y según riesgo.
Integre con , Axway y Azure Management.
Diagnosticar invalid_request, invalid_client, invalid_grant, invalid_token y insufficient_scope.
Estructura del capítulo
16.1 El problema que resuelve 2.0
16.2 Roles y límites de confianza
16.3 , metadata y canales
16.4 Registro, tipos de clientes y de redireccionamiento
16.5 Grants, flujos y tipos de
16.6 en profundidad
16.7 y protección de interceptación
16.8 , , issuer y protección contra mix-up
16.9 Autenticación de clientes confidenciales
16.10 Aplicaciones web, , nativas y
16.11
16.12 Device Authorization
16.13 , rotación y reutilización
16.14 , , audience e indicadores de recursos
16.15 opacos, introspección y revocación
16.16 y validación de
16.17 Consentimiento, least privilege y Rich Authorization
16.18 , y
16.19 Sender-constrained con y
16.20 y on-behalf-of
16.21 Metadata del y recurso protegido
16.22 en , Axway y Azure
16.23 Amenazas y hardening
16.24 basada en evidencia
16.25 Estudios de casos y laboratorios
Resumen, lista de verificación, ejercicios, glosario y referencias.
16.1 El problema que resuelve 2.0
Antes de los marcos de delegación, era común que una aplicación solicitara la contraseña de un usuario para acceder a otro sistema. Esta práctica otorgaba al cliente un poder excesivo, impedía limitar las operaciones, dificultaba la revocación selectiva y exponía las credenciales reutilizables. Si el cliente estuviera comprometido, el atacante podría actuar como usuario en cualquier interfaz que aceptara la misma contraseña.
reemplaza este intercambio con una concesión de autoridad. El cliente solicita autorización para una finalidad; El autentica al usuario cuando es necesario, aplica políticas y emite un destinado al . El cliente recibe sólo la capacidad representada por el , no la credencial principal del usuario.
El marco no define por sí solo cómo se autentica el usuario, cómo modela la los permisos de los objetos o cómo se debe formatear el . Tampoco transforma un en prueba de inicio de sesión para el cliente. OpenID Connect satisface la necesidad de comunicar la autenticación del usuario al cliente, mientras que la sigue siendo responsable de la autorización detallada y las reglas comerciales.
modelo mental
responde: "¿cómo obtiene y presenta un cliente una autoridad limitada para un recurso?" No se responde a sí mismo: "¿quién es el usuario de la interfaz?", "¿el usuario es propietario de este objeto?" o "¿esta transacción está permitida por el dominio?".
Figura 1: Los roles son responsabilidades lógicas; un producto puede implementar más de una función, pero los límites deben permanecer explícitos.
16.2 Roles y límites de confianza
El es la entidad capaz de otorgar acceso al recurso. En muchos flujos se trata de una persona, pero también puede ser una organización o una política administrativa. El cliente es la aplicación que solicita acceso. No es automáticamente propietario de los datos y no se le debe otorgar más autoridad de la necesaria para su función.
El autentica al cuando corresponde, evalúa la solicitud, registra el consentimiento o la política y emite . El es la que acepta y decide si se permite la operación. En una plataforma empresarial, puede actuar como parte del validando el y aplicando controles transversales, mientras que el conserva las decisiones de dominio.
Los roles lógicos no necesariamente equivalen a procesos separados. El mismo producto puede alojar autorizaciones y recursos, y una puede intermediar varias . Aun así, el issuer, la audience, las claves, los y las responsabilidades deben ser distintos para evitar que un emitido para un servicio sea aceptado indebidamente por otro.
Tabla 1: Cada rol tiene sus propios controles y evidencia.
papel
Responsabilidad principal
Error de dibujo común
Resource owner
otorga autoridad sobre los recursos
Trate el consentimiento como una autorización sin restricciones.
Client
solicitar y usar tokens
almacenar secreto en la aplicación incapaz de protegerlo.
Authorization server
emite tokens y publica metadata
emitir una audience amplia y aceptar URI de redireccionamiento flexible.
Resource server
valida el token y autoriza la operación
Acepte JWT solo porque la firma es válida.
16.3 , metadata y canales
El de autorización recibe solicitudes a través del agente de usuario y realiza interacción con el . El cliente accede directamente al para intercambiar grants por . Esta separación crea dos canales: front-channel, expuesto al navegador, historial, extensiones y redireccionamientos; y back-channel, protegido por y utilizado para solicitudes directas entre el cliente y el .
Los opcionales amplían la operación y la interoperabilidad. La introspección permite al consultar el estado de un . La revocación le permite invalidar y, según la implementación, . recibe los parámetros de autorización por adelantado a través del back-channel. Los metadata describen el issuer, los , los métodos de autenticación, los algoritmos y las capacidades admitidas.
Las de los son datos de seguridad. El cliente no debe construirlos mediante concatenación ni aceptar metadata de una fuente que no sea de confianza. El issuer devuelto debe coincidir con el issuer configurado. , la validación del nombre de host y la resolución confiable siguen siendo esenciales porque protege la autoridad, no reemplaza la seguridad del canal.
Tabla 2: Los criterios de valoración tienen diferentes exposiciones y controles.
Endpoint
canal tipico
Propósito
Autorización
front-channel
interacción del usuario y emisión de códigos de autorización.
token
back-channel
intercambio de grants y autenticación de clientes.
Introspection
back-channel
consulta de actividad y atributos de token.
Revocación
back-channel
invalidación del token según la política.
PAR
back-channel
registro protegido de parámetros de autorización.
Metadata
lectura autenticada en fuente
descubrimiento de endpoints y capacidades.
16.4 Registro, tipos de clientes y de redireccionamiento
El registro asocia client_id, de redireccionamiento, tipo de aplicación, contactos, claves, métodos de autenticación y grants permitidos. client_id es un identificador público, no un secreto. La seguridad depende del vínculo correcto entre el identificador y las propiedades registradas, especialmente los de redireccionamiento y el material criptográfico.
Los clientes confidenciales pueden mantener las credenciales bajo control, como aplicaciones o servicios web . Los clientes públicos se ejecutan en entornos donde el usuario o atacante puede extraer el software y sus valores, como y aplicaciones nativas. Insertar client_secret en un JavaScript, un paquete móvil o una aplicación distribuida no hace que el cliente sea confidencial; el secreto se vuelve copiable.
El de redireccionamiento debe compararse mediante una coincidencia exacta, excepto en el caso de reglas muy específicas para el bucle invertido de la aplicación nativa. Los comodines, la coincidencia de prefijos y los redirectores abiertos permiten omitir códigos. Cada entorno debe tener sus propios y la aplicación debe validar la ruta de retorno antes de iniciar cualquier sesión local.
Secreto público del cliente
Un valor integrado en un , una aplicación móvil o un binario distribuido debe considerarse público. La protección adecuada proviene de , de redireccionamiento estricto, sistema operativo, cuando corresponda y restricción de , no de intentar ocultar un client_secret.
16.5 Grants, flujos y tipos de
es la representación de una autorización utilizada por el cliente para obtener un . El , el , las y el código del dispositivo son ejemplos. “Flujo” describe la secuencia completa de interacciones. Confundir concesión con conduce a registros y políticas inexactas: el es corto, de un solo uso y está destinado al ; el se presenta a la .
El representa la autoridad para un . El le permite solicitar nuevos y debe estar restringido al . El pertenece a OpenID Connect y comunica datos sobre la autenticación al cliente; no debe utilizarse como . Cada artefacto tiene un destinatario, vida útil y protección diferente.
Las antiguas Password Credentials y Implicit no se deben elegir para proyectos nuevos. El primero expone en el front-channel y ha perdido su justificación con ; el segundo entrega las credenciales de usuario al cliente e impide muchos controles modernos. Las migraciones deben priorizar el con o flujos apropiados de máquina a máquina.
Tabla 3 - Los artefactos no son intercambiables.
artefacto
Destinatario
Propiedad operativa
Authorization code
token endpoint
URI/PKCE corto, de un solo uso y vinculado al cliente/redireccionamiento.
Access token
resource server
autoridad temporal, audience y scope.
Refresh token
authorization server
credencial de relativa larga duración; Requiere protección y rotación.
ID token
Cliente OIDC
afirmación sobre autenticación, no credencial API genérica.
device_code
token endpoint
sondeo controlado para dispositivos limitados.
Figura 2: vincula el intercambio del a una prueba creada por el cliente.
16.6 en profundidad
El cliente crea una solicitud de autorización que contiene los parámetros response_type=code, client_id, redirect_uri, , estado y . El navegador se redirige al , donde se puede autenticar al usuario y evaluar la política. Si tiene éxito, el devuelve un para el de redireccionamiento registrado.
El cliente recibe el código y lo intercambia en el . Esta solicitud directa incluye grant_type=authorization_code, código, redirect_uri y code_verifier. Los clientes confidenciales también se autentican. El servidor verifica el uso único, el plazo, el cliente, el de redireccionamiento y antes de emitir .
El código no debe tener autoridad reutilizable ni enviarse a . Existe para reducir la exposición del en el front-channel y permitir validaciones en el canal posterior. Los registros, las herramientas de análisis, las páginas de error y las referencias no deben registrar el valor. Después del cambio, la aplicación debe eliminar los parámetros confidenciales de la y establecer su propio estado de sesión de forma segura.
Solicitud de autorización - valores ilustrativos
GET /authorize?response_type=code
&client_id=portal-pagos
&redirect_uri=https%3A%2F%2Fapp.example%2Fcallback
&scope=pagos.read%20pagos.write
&state=valor-aleatorio
&code_challenge=base64url-sha256-verifier
&code_challenge_method=S256
Intercambio de código por
POST /token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&code=AUTHORIZATION_CODE
&redirect_uri=https%3A%2F%2Fapp.example%2Fcallback
&client_id=portal-pagos
&code_verifier=SECRETO_ALEATORIO_DE_LA_INSTANCIA
16.7 y protección de interceptación
comienza con un code_verifier aleatorio, de alta entropía y exclusivo de prueba. El cliente calcula code_challenge = (SHA256(code_verifier)) y envía el desafío al de autorización. Al cambiar el código, muestra el verificador original. El vuelve a calcular el desafío y requiere una coincidencia.
Si un atacante intercepta el , no podrá intercambiarlo sin el verificador. Se debe utilizar el método S256; Plain existe para una compatibilidad restringida y no ofrece la misma protección contra la observación que la impugnación. no reemplaza el estado, el de redireccionamiento exacto, ni la autenticación de . Resuelve una amenaza específica: la interceptación e inyección de códigos de autorización.
También se debe exigir a los clientes confidenciales cuando utilicen el . Además de estandarizar el flujo, protege contra ataques en los que se inyecta código obtenido en otro contexto en la sesión del cliente. El verificador no se debe reutilizar y debe estar asociado con la misma transacción que contiene el de estado y de redireccionamiento.
Tabla 4: PKCE es una prueba por transacción, no una credencial permanente.
Elemento
donde aparece
Requisito
code_verifier
solicitud de token
aleatorio, secreto durante la transacción y no reutilizado.
code_challenge
solicitud de autorización
derivado del verificador por S256.
code_challenge_method
solicitud de autorización
S256 para sistemas nuevos.
vínculo
estado del cliente
Mismo intento, client_id, redirect URI y código.
16.8 , , issuer y protección contra mix-up
El estado vincula la respuesta de autorización a la sesión que inició la solicitud y ayuda a prevenir . Debe ser impredecible, de un solo uso y asociado localmente con el issuer, el de redireccionamiento, el y la intención del usuario. Tratar el estado únicamente como una de retorno firmada puede dejar la sesión sin la protección adecuada contra respuestas no solicitadas.
pertenece a OpenID Connect y vincula el a la solicitud de autenticación. No reemplaza al estado para asegurar el flujo de . En clientes que usan , es posible que se requieran ambos: el estado protege la redirección y el se valida dentro del de ID.
Los ataques de mix-up de explotan a los clientes que hablan con varios issuers y no vinculan la respuesta al issuer correcto. El cliente debe utilizar metadata confiables, validar el parámetro iss cuando sea compatible y enviar el código solo al del issuer asociado con la transacción. Nunca seleccione el basándose en datos de respuesta no validados.
Estado transaccional mínimo
Almacene, tentativamente: issuer esperado, client_id, de redireccionamiento, estado, code_verifier, cuando hay , solicitados y tiempo. Consume el registro una vez y caduca rápidamente.
16.9 Autenticación de clientes confidenciales
El debe distinguir al cliente que presenta la concesión. client_secret_basic es simple, pero se basa en un transporte secreto y seguro simétrico. client_secret_post coloca el secreto en el cuerpo y aumenta el riesgo de registro; debe evitarse cuando se admite el método básico. Los secretos necesitan almacenamiento en bóveda, rotación, propiedad y por entorno.
private_key_jwt utiliza una aserción firmada por la clave privada del cliente. El valida issuer/sujeto, audience, vencimiento, identificador único y firma. La clave privada no se envía y puede gestionar la rotación. El mecanismo requiere prevención de reproducción jti y una validación estricta de la audience del .
La autenticación del cliente vincula la autenticación al certificado presentado en la conexión . Puede utilizar tradicional o certificado registrado. En entornos con , debe quedar claro dónde termina y cómo se preserva la identidad del certificado. La autenticación sólida del cliente no elimina la necesidad de en el .
Tabla 5 - El método debe corresponder a la capacidad real del cliente.
Método
Materiales
ventaja
Precaución
client_secret_basic
secreto simétrico
amplio apoyo
rotación, registros y uso compartido.
private_key_jwt
clave privada
no envía secretos; buena automatización
jti, audience y rotación de JWKS.
Autenticación de cliente mTLS
certificado y clave
fuerte conexión con el canal
Terminación TLS y ciclo de certificados.
ninguno
sin autenticación
Apto para clientes públicos.
Requiere PKCE y URI de redireccionamiento seguro.
16.10 Aplicaciones web, , nativas y
Las aplicaciones web tradicionales mantienen el código y las credenciales en el servidor. El navegador solo recibe una de sesión protegida, mientras que el ejecuta el , almacena y llama a las . Esta separación reduce la exposición de los a JavaScript, pero requiere protección contra , fijación, y robo de sesiones.
Las son clientes públicos. El con es el flujo moderno, pero los almacenados en el navegador todavía están expuestos a y extensiones. Un para puede recibir el código, mantener en el servidor y exponer solo HttpOnly, Secure y SameSite al navegador. agrega estado e infraestructura pero reduce la huella del .
Las aplicaciones nativas utilizan navegadores externos y redirigen según enlaces de aplicaciones, enlaces universales, esquemas personalizados o loopback. Las vistas web integradas degradan la seguridad y la experiencia de . El sistema debe evitar que otra aplicación capture el de redireccionamiento y siempre combinar el mecanismo de devolución con .
Tabla 6: La arquitectura cambia donde se expone el token.
Tipo
Clasificación
Almacenamiento preferido
Flujo
Web con backend
confidencial
tokens en el servidor; cookie de sesión del navegador
Authorization Code + PKCE.
puro SPA
publico
memoria cuando sea posible; minimizar la persistencia
Authorization Code + PKCE.
SPA con mejor amiga
mejor amiga confidencial
tokens en BFF; cookie protegida
Authorization Code + PKCE.
Aplicación nativa
publico
almacenamiento seguro del sistema
Authorization Code + PKCE y navegador externo.
16.11
Las se utilizan cuando el cliente actúa por cuenta propia, sin un propietario de recurso humano en la transacción. El cliente se autentica en el y recibe un asociado con la identidad de la aplicación. Es adecuado para servicios, trabajos y automatizaciones que tengan sus propios permisos.
no debe usarse para simular usuarios ni transportar user_id arbitrario. La autorización debe basarse en el principal de la aplicación, su tenant, propietario y los permisos de la aplicación. Si un servicio necesita preservar el contexto del usuario al llamar a otro, es más adecuado el o on-behalf-of.
Dado que el puede abrir un acceso amplio, las credenciales estáticas deben reemplazarse con private_key_jwt, , identidad administrada o federación de cargas de trabajo cuando sea posible. Los de aplicación deben separarse de los delegados para evitar que un exclusivo de aplicación se confunda con la autoridad del usuario.
: ejemplo conceptual
POST /token
Authorization: Basic base64(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&scope=liquidaciones.process
Pregunta de revisión
Si la operación necesita saber “¿qué usuario autorizó?”, las por sí solas no proporcionan esa respuesta. Lo principal es la aplicación.
16.12 Device Authorization
La Device Authorization admite dispositivos con entrada limitada o sin un navegador conveniente. El cliente solicita y user_code, presenta al usuario un verification_uri y comienza a sondear el . El usuario completa la autenticación y autorización en otro dispositivo compatible con navegador.
El cliente debe respetar el intervalo, expires_in y errores como authorization_pending y slow_down. El sondeo agresivo crea carga y puede provocar bloqueos. El user_code debe ser lo suficientemente corto para escribirlo, pero protegido por limitación de velocidad, caducidad y vinculación al de alta entropía.
El flujo no debe usarse como acceso directo para aplicaciones que ya tienen un navegador adecuado. La interfaz debe mostrar claramente qué dispositivo y operación se está autorizando, reduciendo los ataques de phishing en los que la víctima ingresa un código enviado por un tercero.
Tabla 7: el flujo separa el dispositivo solicitante del canal de autenticación.
paso
artefacto
controlar
Inicio
device_code + user_code
device_code secreto; user_code corto y caducable.
Interacción
verificación_uri
mostrar el contexto del cliente y prevenir el phishing.
sondeo
device_code
respetar el intervalo y la desaceleración.
Conclusión
access token/actualización
vincularse al cliente y a la política aprobada.
Figura 3: Los tienen diferentes ciclos de vida y decisiones de revocación.
16.13 , rotación y reutilización
El es una credencial de alto valor porque le permite obtener nuevos sin repetir toda la interacción. Solo debe enviarse al , protegerse en un almacenamiento adecuado y limitarse al cliente y la autorización original. Los cortos reducen la exposición; Los mantienen una continuidad controlada.
Para los clientes públicos, BCP recomienda rotados o restringidos por el remitente. En rotación, cada uso produce un nuevo e invalida el anterior. Si vuelve a aparecer un antiguo, el servidor detecta un posible robo y revoca la familia o autorización correspondiente. La implementación debe manejar la simultaneidad y las respuestas perdidas sin crear falsos positivos.
Se deberá definir caducidad absoluta, caducidad por inactividad, revocación por cierre de sesión, cambio de contraseña, retirada del consentimiento y riesgo. El “ nunca caduca” transfiere todo el control a la revocación perfecta, algo difícil en los sistemas distribuidos. El cliente debe tratar invalid_grant como una necesidad de reautorización, no como un motivo para repetir indefinidamente.
Tabla 8: El refresh token necesita su propia política.
controlar
Objetivo
Decisión operativa
Rotación
detectar reutilización
revocar la familia y registrar el incidente cuando reaparezca el token antiguo.
Restricción del remitente
unirse a una clave
validar mTLS/DPoP en cada renovación.
Caducidad absoluta
limitar la duración total
requerir una nueva autorización después de un período definido.
Inactividad
cerrar autorizaciones abandonadas
renovarse sólo mientras exista un uso legítimo.
Revocación
responder al riesgo y al cierre
propagar rápidamente y auditar el motivo.
16.14 , , audience e indicadores de recursos
El solo debe ser aceptado por el para el cual fue emitido. Una amplia audience convierte un en un pase reutilizable entre . Los indicadores de recursos permiten al cliente declarar el recurso deseado durante la autorización o la solicitud de , lo que ayuda al a emitir específicos.
El representa la autoridad solicitada y concedida, pero su semántica debe estar documentada. Los como lectura y escritura son simples, pero pueden resultar ambiguos en plataformas grandes. Los nombres de dominio, operación y recursos ayudan: pagos.read, pagos.create y conciliacao.execute. El no reemplaza la autorización de estado de objeto, tenant o dominio.
El valida la audience, el y el contexto de la solicitud. Una no debería aceptar un porque contiene "admin" sin verificar el issuer, el tipo y el origen del . Los de autorización deben tener gobernanza: quién las emite, cuándo cambian, cómo se revocan y qué servicio tiene autoridad para interpretarlas.
Indicador de recursos: ejemplo conceptual
GET /authorize?response_type=code
&client_id=app
&resource=https%3A%2F%2Fapi.pagos.example
&scope=pagos.read
Tabla 9 - La validación técnica y la autorización comercial son complementarias.
Elemento
Pregunta de validación
audience
¿Se emitió este token para esta API o API Gateway?
scope
¿La autoridad otorgada incluye la operación?
sujeto/cliente
¿Quién es el mandante y qué aplicación opera?
tenant
¿El principal y el recurso pertenecen al contexto permitido?
token type
¿Es el artefacto un access token esperado, no un ID token u otro JWT?
16.15 opacos, introspección y revocación
El opaco no revela la estructura al cliente o al . La consulta el mediante introspección o utiliza un estado local distribuido. Este enfoque facilita la revocación inmediata y minimiza la exposición de , pero crea dependencias en la disponibilidad, latencia, autenticación de y política de .
La introspección devuelve atributos activos y autorizados para el solicitante. active=false debería ser una respuesta normal para un no válido, caducado, revocado o desconocido, sin revelar detalles. El necesita autenticar los servidores de recursos y limitar los datos que cada uno puede consultar. La caché reduce la carga, pero aumenta la ventana entre la revocación y la aplicación.
La revocación permite al cliente solicitar la invalidación. La respuesta exitosa no debería revelar si el existía. La revocación del normalmente cancela la capacidad de renovación; Los ya emitidos pueden continuar hasta que caduquen si son autónomos. Las arquitecturas de alto riesgo combinan eventos cortos, introspección, revocación o lista de denegados.
permite que el valide firmas y localmente, lo que reduce las llamadas al . El perfil del estandariza las y los tipos útiles, pero la aún necesita conocer el issuer, la audience, los algoritmos y las claves confiables. La decodificación de no se valida.
La validación debe corregir los algoritmos permitidos, localizar la clave indicada por kid en confiable, verificar la firma, el issuer, la audience, el vencimiento, no antes, cuando esté presente y el tipo esperado. El debe rechazar los emitidos para otros usos, incluso si la misma clave firma de identificación. Las reglas de tipo y perfil ayudan a evitar confusiones entre los tipos de .
La rotación de claves requiere y actualización controlada. Cuando aparece un kid desconocido, la puede actualizar , pero no debe permitir que el apunte a una de clave arbitraria. La falla temporal de los metadata no debería invalidar inmediatamente todas las claves que aún son confiables; al mismo tiempo, el exceso de caché retrasa la eliminación de la clave comprometida.
Tabla 10 - La firma válida es solo uno de los controles.
Validación
No evitar
firma y algoritmo fijo
token alterado o confusión de algoritmo.
issuer exacto
token de dominio que no es de confianza.
audience
reutilizar en otra API.
exp/nbf/reloj
utilizar fuera de la ventana permitida.
tipo/perfil
confusión entre access token, ID token y otros JWT.
scopes y claims
operación más allá de la autoridad otorgada.
Contenido no cifrado
Un firmado normalmente protege la integridad, no la confidencialidad. Evite PII y datos innecesarios. El pasa por clientes, servidores , , herramientas y registros; trátelo como una credencial confidencial.
16.17 Consentimiento, least privilege y Rich Authorization
El consentimiento es una interfaz de decisión, no un sustituto de la política. En entornos corporativos, algunos permisos son aprobados por administradores o contratos, mientras que otros dependen del usuario. La pantalla debe identificar cliente, datos, acciones, duración y consecuencias, evitando técnicos incomprensibles.
El privilegio mínimo comienza con la definición de y continúa en el . Solicitar todos los “para evitar nuevos consentimientos” aumenta el impacto de las filtraciones. La autorización incremental le permite solicitar autoridad adicional solo cuando se utiliza la funcionalidad. El puede otorgar un subconjunto y el cliente debe verificar la respuesta.
Las Rich Authorization representan detalles estructurados como monto, moneda, cuenta y tipo de transacción. Esto permite autorizaciones más precisas que las cadenas de , especialmente en pagos y datos financieros. El objeto de autorización debe ser validado, firmado o protegido según el perfil adoptado y no debe ser aceptado como dato gratuito enviado por el cliente a la .
Pushed Authorization permiten al cliente enviar parámetros al a través del back-channel y recibir request_uri de corta duración. El navegador sólo lleva la referencia. Esto reduce la manipulación, la exposición y la longitud de la y permite la autenticación del cliente antes de la interacción del usuario.
-Secured Authorization representa la solicitud en un firmado y, opcionalmente, cifrado. El valida la integridad y el origen de los parámetros. y se pueden combinar: el cliente envía un objeto de solicitud firmado al y utiliza request_uri en el de autorización.
protege la respuesta de autorización en un firmado o cifrado. En lugar de depender únicamente de parámetros vagos en la redirección, el cliente valida el issuer, la audience, la firma y el tiempo. Estos mecanismos aumentan la complejidad y la gestión de claves, por lo que son más comunes en perfiles financieros, ecosistemas regulados e integraciones de alto riesgo.
Tabla 11 - Mecanismos de protección de las diferentes etapas del frente-canal.
Mecanismo
Protege
Beneficio
PAR
enviando parámetros
back-channel autenticado y URL acortada.
JAR
solicitar contenido
integridad, origen y posible confidencialidad.
JARM
respuesta de autorización
firma verificable, issuer y audience.
Figura 4: La proof-of-possession reduce la utilidad de un copiado.
16.19 Sender-constrained con y
El al portador funciona como dinero al portador: quien obtiene el valor puede presentarlo. El restringido por el remitente vincula el a una clave de cliente. El requiere, además del , la correspondiente proof-of-possession. El objetivo es reducir la después de fugas en registros, servidores , memoria o canales laterales.
Con , el asocia el con el certificado del cliente y el verifica el certificado presentado en la conexión. El cnf puede cargar la huella digital. La arquitectura debe garantizar que la observe la identidad correcta incluso cuando haya equilibradores de carga o que terminen las conexiones.
utiliza un de prueba firmado por el cliente en cada solicitud, que contiene el método , , hora, identificador único y enlace al . La valida firma, htm, htu, iat, jti, key y ath. es una protección de la capa de aplicación y no reemplaza a . El del servidor y el caché jti pueden fortalecer la defensa de según el riesgo.
Tabla 12 - La elección depende del cliente, la infraestructura y el riesgo.
Mecanismo
vínculo
punto fuerte
Desafío
mTLS
certificado de conexión
fuerte para clientes y servicios controlados
proxy, PKI y terminación TLS.
DPoP
clave y prueba bajo petición
aplicable sin certificado de cliente
Validación de URI, reloj, jti y clave.
Portador
ninguno
simplicidad y compatibilidad
replay después de la copia del token.
16.20 y on-behalf-of
En las arquitecturas de servicios, es posible que el primer necesite llamar a otro manteniendo parte de la autoridad original. Reenviar el mismo a todos los servicios amplía las audiences y expone la credencial. le permite intercambiar un sujeto por otro apropiado para el siguiente recurso.
El nuevo puede representar al usuario, al servicio del actor o a ambos. Los de actor ayudan a registrar la cadena. La política debe limitar qué clientes pueden intercambiar , qué audiences pueden solicitarse y qué pueden conservarse. El intercambio no debe elevar el privilegio más allá del de entrada y la autoridad del actor.
On-behalf-of es una implementación de delegación en la que un servicio actúa on-behalf-ofl usuario. Los registros deben preservar el usuario, el cliente inicial, el servicio intermedio y la autorización efectiva. Si una llamada pasa por varios dominios de confianza, cada salto debe tratarse como una nueva decisión, no como una simple copia de los .
Tabla 13 - Preservar el contexto sin reutilizar indiscriminadamente la autoridad.
Estrategia
ventaja
Riesgo
Reenviar token original
sencillo
amplia audience, fugas y acoplamiento.
Token Exchange
token específico por salto
complejidad y correlación de las políticas.
Sólo credencial de servicio
separa el backend
Pierde el contexto del usuario cuando es necesario.
16.21 Metadata del y recurso protegido
Los metadata del publican issuers, , métodos de autenticación, grants, y algoritmos. Los clientes deben obtener el documento fuente configurado y validar la coherencia entre el issuer y la . Los metadata simplifican la rotación y la interoperabilidad, pero no deberían convertir el descubrimiento en confianza automática.
Los metadata de recursos protegidos permiten que una publique identificadores de recursos, servidores de autorización relacionados, y métodos de presentación admitidos. Esto ayuda a los clientes y servidores de autorización a comprender cómo obtener para un recurso y mejora los desafíos de WWW-Authenticate.
Los metadata deben ser versionados y monitoreados como parte de la plataforma. Los cambios en el , el algoritmo o el issuer pueden dañar a todos los clientes. La caché debe respetar la disponibilidad sin congelar la configuración indefinidamente. Los entornos interno, externo y de homologación deben tener documentos separados para evitar la mezcla de confianza.
Figura 5 - La actúa como control transversal; La autorización del dominio permanece en el .
16.22 en , Axway y Azure
Las pueden validar , consultar introspección, requerir , imponer cuotas por client_id y propagar contexto confiable. Antes de insertar internos, la debe eliminar las versiones proporcionadas por el cliente. El debe aceptar estos solo desde una conexión autenticada proveniente de la .
En Azure Management, validate- y validate-azure-ad- pueden validar antes del . Las políticas pueden requerir issuer, audience y , mientras que la authentication-managed-identity permite que la obtenga un para un compatible. La configuración del portal para desarrolladores para facilita las pruebas, pero no reemplaza la aplicación de políticas.
En Axway , los filtros y servicios de pueden implementar políticas de , validación de , autenticación de clientes y servidores de recursos. La topología necesita registrar qué componentes emiten, qué validaciones, dónde se almacenan las claves y cómo se manejan la revocación y la rotación. A medida que cambien las versiones y las licencias, valide la documentación del producto instalado.
El valida issuer, audience, firma, tiempo, y requisitos transversales. El continúa verificando el tenant, la propiedad, el estado de la transacción, los límites comerciales y la autorización de objetos.
16.23 Amenazas y hardening
reduce la interceptación del . y el inicio de sesión requieren vínculo de y transaccional. La confusión requiere asociación al issuer. La manipulación del de redireccionamiento requiere una comparación exacta. La fuga de requiere , higiene de registros, correctos, almacenamiento seguro y reducción de . El puede requerir una sender constraint.
Los redirectores abiertos en el cliente o en el aumentan la omisión de código. Referer, el historial y analytics pueden capturar parámetros del front-channel. Los de se filtran fácilmente y no deben usarse como forma normal de presentación. Los deben seguir el Authorization y las respuestas necesitan un -Control adecuado.
Los servidores de autorización deben proteger los contra la fuerza bruta, el credential stuffing, la flooding y el abuso de user_code. Los clientes deben validar todas las respuestas y no mostrar detalles internos. Los servidores de recursos deben limitar los algoritmos, validar audiences y no confiar en sin espacio de nombres ni gobernanza. Cada implementación requiere un inventario de clientes, propietarios, grants, de redireccionamiento y claves.
Tabla 14 - Los controles deben producir evidencia observable.
Amenaza
control principal
evidencia
Intercepción de código
PKCE S256 y código de un solo uso
Fallos y reutilización del verificador.
CSRF/inyección de inicio de sesión
estado vinculado a la sesión
estado ausente, divergente o consumido.
AS mix-up
issuer vinculado y metadata
issuer de respuesta y token endpoint utilizados.
Replay de tokens
TTL, mTLS/DPoP y detección
jti, huella digital y origen.
Actualizar robo de tokens
detección de rotación y reutilización
Familia revocada y evento de riesgo.
Abuso de redirección
comparación exacta y sin redirección abierta
URI registrado y URI recibido.
Prácticas desaconsejadas
No utilice credenciales de contraseña de propietario de recurso o de Implicit en proyectos nuevos. No almacene client_secret en el . No acepte de redireccionamiento por prefijo. No trate el como un . No acepte sólo porque "decodifica sin errores".
16.24 basada en evidencia
El diagnóstico comienza identificando el y el paso. El error en el de autorización implica parámetros, sesión, política y de redireccionamiento. El error del implica autenticación, código, verificador, concesión y reloj del cliente. El error de implica presentación, validación y autorización. Combinar estos pasos convierte invalid_grant en " no válido" o 403 en "fallo de inicio de sesión".
Recopile ID de correlación, issuer esperado, client_id, grant_type, de redireccionamiento normalizado, , audience, kid, hora y estado sin registrar ni códigos. Compara el reloj de los componentes. Confirme los metadata y a los que accede el runtime, no solo el cuaderno del operador. En entornos , registre el nombre de host, y el destino real.
Para la intermitencia, investigue la rotación de claves, múltiples nodos con divergente, simultáneo o reutilización de , balanceo sin afinidad de sesión y . Reproduzca con un único flujo controlado y sintéticos. Un puede funcionar en una y fallar en otra debido a una configuración o caché diferente.
Tabla 15 - Clasificar el paso antes de cambiar de política.
error
Hipótesis iniciales
evidencia
invalid_request
parámetro faltante, duplicado o incompatible
Solicitud normalizada y metadata.
invalid_client
método, secreto, certificado o afirmación
client_id, método de autenticación, jti y huella digital del certificado.
invalid_grant
código caducado/usado, PKCE, URI de redireccionamiento o actualización revocada
estado de la transacción e historial de uso.
invalid_token
firma, issuer, audience, hora o revocación
código de motivo interno y kid.
insufficient_scope
token válido no se requiere autoridad
scope otorgado y política de operación.
401/403 divergente
diferentes capas respondieron
Vía, servidor, ID de solicitud y registros correlacionados.
Error externo estable; La causa detallada permanece en el registro seguro
Un envía client_secret en el de solicitud. El valor es visible en el paquete y cualquier usuario puede copiarlo. La solución es registrar el cliente como público, usar el con y el de redireccionamiento exacto. Si el riesgo de en el navegador es alto, adopte y esté protegido por .
La investigación también verifica , almacenamiento de , , cierre de sesión y renovación. Simplemente eliminar el secreto no resuelve la exposición del o del persistente en localStorage.
Caso 2: aceptado por una incorrecta
Dos confían en el mismo issuer y clave, pero una de ellas no valida la audience. Se acepta para los pagos un emitido para informes. La solución es requerir una audience específica y separados. En sistemas críticos, los indicadores de recursos y los de recursos reducen la posibilidad de reutilización cruzada.
Las pruebas de contratos de seguridad deben enviar válidos a audiences vecinas y esperar el rechazo. Esta verificación negativa debe existir en la y en el cuando ambos validan los .
Caso 3: reutilizado después del tiempo de espera
El cliente utiliza un , recibe un tiempo de espera y repite la llamada. El primer procesamiento había emitido un nuevo ; la parece robo y la familia queda revocada. La solución combina idempotencia operativa, ventana de tolerancia controlada o lógica de cliente que serializa la renovación y maneja las respuestas perdidas.
Una tolerancia amplia debilita la detección de reutilización. La decisión debe considerar el riesgo, la red y la capacidad de correlacionar intentos. Los registros deben registrar la familia, el predecesor, el cliente y el resultado sin almacenar el valor bruto.
Caso 4: la valida, el rechaza
La acepta el para su propia audience y lo reenvía al , que espera el destinado a él. La arquitectura debe elegir: el confía en el contexto propagado por la en un canal autenticado, o la obtiene un nuevo para el utilizando una identidad administrada, o .
Reenviar el original solo es correcto cuando el es el para esa audience. La decisión debe documentarse en el contrato de seguridad y probarse con múltiples .
Laboratorios de observación
Laboratorio 1: con
Utilice un de laboratorio o un simulador autorizado.
Generar verificador aleatorio y desafío S256.
Ejecute el flujo correcto y registre solo valores sintéticos.
Repita con el verificador incorrecto, el estado divergente, el código reutilizado y el de redireccionamiento modificado.
Clasifique cada error por paso y .
Laboratorio 2: validación de audience y
Configure dos con diferentes audiences.
Emita el para la A e intente usarlo en la B.
Falta de prueba, caducado y issuer alternativo.
Compare la respuesta externa y el código de motivo interno.
Laboratorio 3: introspección y caché
Utilice de de introspección y laboratorio opacos.
Mida la latencia sin caché y con caché corto.
Revocar el y observar la ventana hasta el rechazo.
Documente la decisión entre disponibilidad y velocidad de revocación.
Laboratorio 4: rotación de
Obtenga un sintético.
Renovar y confirmar emisión del sucesor.
Reutilice el predecesor y observe la política familiar.
Simula dos renovaciones competidoras y analiza el resultado.
Laboratorio 5: política en la puerta de entrada
Configure el issuer, la audience y el en la del laboratorio.
Prueba de kid desconocido y actualización de .
Elimine los de identidad enviados por el cliente.
Solo propague validados y compárelos con la autorización de .
Resumen del capítulo
2.0 es un marco de delegación. El , el cliente, el y el tienen diferentes responsabilidades. El de autorización y el de utilizan canales diferentes, y cada artefacto (código, , y de ID) tiene su propio destinatario y ciclo de vida.
El con es la base moderna para aplicaciones basadas en usuarios. protege contra la interceptación, el estado vincula la transacción, el pertenece al y el issuer protege a los clientes de múltiples issuers. Los clientes públicos no tienen secretos fiables; Los clientes confidenciales pueden utilizar secret, private_key_jwt o .
Las representan la aplicación, la autorización del dispositivo cumple con la entrada limitada y los requieren restricciones de rotación o del remitente. Los necesitan una audience y un mínimos. Los opacos favorecen el control central; Los favorecen la validación local, pero requieren una verificación completa y gestión de claves.
, , y RAR fortalecen las solicitudes y respuestas; y reducen la ; controla la delegación entre servicios. Las aplican validación cruzada, mientras que los conservan la autorización del dominio. La seguridad depende del inventario, el privilegio mínimo, el de redireccionamiento exacto, la higiene del registro, la observabilidad y las pruebas negativas.
Siguiente paso del curso
El Capítulo 17 profundizará en OpenID Connect: , información de usuario, , acr, amr, autenticación federada, sesiones, cierre de sesión e integración segura de aplicaciones con proveedores de identidad.
Lista de verificación de 2.0
Cada cliente tiene un propietario, tipo, de redireccionamiento y grants registrados explícitamente.
El utiliza S256, incluso para clientes confidenciales.
El estado es aleatorio, de un solo uso y está vinculado al issuer, al de redireccionamiento y al verificador.
Los clientes públicos no dependen de client_secret.
Los de redireccionamiento utilizan coincidencias exactas y no contienen redirectores abiertos.
Las grants implícitas y de contraseña no se utilizan en proyectos nuevos.
Los tienen una audience y un mínimos.
El no se acepta como .
Los tienen rotación, restricción de remitente o política equivalente.
Los validan firma, algoritmo, issuer, audience, tipo y hora.
La introspección está autenticada y tiene con reconocimiento de revocación.
Los no aparecen en , registros, análisis o mensajes de error.
Se considera que o tienen un alto riesgo de .
La y el tienen una división de autorización explícita.
Se prueba la rotación de , certificados y .
Los errores de se pueden correlacionar sin revelar detalles confidenciales.
Los clientes, grants, consentimientos y tienen un proceso de terminación.
Ejercicios
Explique por qué 2.0 no es, por sí solo, un protocolo de autenticación de usuarios.
Diferenciar , , y .
Describir las verificaciones del con .
Explique por qué el estado y no se reemplazan entre sí.
Califica un y justifica por qué su client_secret no es confiable.
Compare client_secret_basic, private_key_jwt y .
modelo para un trabajo sin usuario.
Explique la detección de reutilización en la rotación de .
Compare el opaco con en cuanto a revocación y disponibilidad.
Enumere las validaciones obligatorias de un .
Explique los indicadores de audience y recursos en una plataforma con múltiples .
Compare , y .
Diferenciar entre vinculado a y vinculado a .
Proponer para tres servicios preservando al usuario.
Cree un script de para invalid_grant intermitente.
Glosario
Tabla 16 - Vocabulario esencial del capítulo.
Término
Definición
Access token
Credencial presentada al resource server para ejercer la autoridad.
Authorization code
Grant breve y de un solo uso intercambiada en el token endpoint.
Authorization server
Componente que evalúa la autorización y emite tokens.
Bearer token
Token utilizable por cualquier poseedor del valor.
Client
Aplicación que solicita y utiliza autoridad.
Client Credentials
Grant en la que la solicitud actúa por cuenta propia.
Confidential client
Cliente capaz de proteger las credenciales de autenticación.
device_code
Artefacto utilizado en el sondeo de Device Authorization Grant.
DPoP
Prueba mediante solicitud que vincula el token a una clave.
Grant
Representación de autorización utilizada para obtener el token.
Introspection
Consulta autenticada sobre actividad y atributos de token.
JAR
Solicitud de autorización protegida en JWT.
JARM
Respuesta de autorización protegida en JWT.
JWT access token
Access token estructurado y firmado según perfil.
PAR
Envío de parámetros por adelantado vía back-channel.
PKCE
Prueba que vincula el intercambio de código con la instancia del cliente.
Public client
El cliente no puede mantener el secreto de manera confiable.
Refresh token
Credencial utilizada para obtener nuevos access tokens.
Resource owner
Entidad capaz de otorgar acceso al recurso.
Resource server
API que acepta access tokens y protege los recursos.
Scope
Representación textual de la autoridad solicitada u otorgada.
Sender-constrained token
Token vinculado a la prueba de una clave de cliente.
State
Valor que vincula solicitud y respuesta y ayuda contra CSRF.
Token Exchange
Grant para intercambiar un token por otro adecuado a un nuevo contexto.
Anexo A - Matriz de elección de flujo
Tabla 17 - La elección final depende de la plataforma, el riesgo y la capacidad del cliente.
Escenario
Flujo inicial
Controles esenciales
Aplicación web con usuario.
Authorization Code + PKCE
URI de redireccionamiento exacto, confidencial, de estado, protegido por cookies y confidencial del cliente.
puro SPA
Authorization Code + PKCE
Cliente público, refuerzo XSS, token corto y sin secreto.
Spa de mayor riesgo
BFF + Authorization Code + PKCE
tokens del lado del servidor, CSRF y cookie HttpOnly/SameSite.
Aplicación nativa
Authorization Code + PKCE
Navegador externo, aplicación/enlace universal y almacenamiento del sistema.
Servicio a servicio
Client Credentials
private_key_jwt, mTLS o identidad de carga de trabajo; Audiencia mínima.
Dispositivo limitado
Device Authorization Grant
Código de usuario caducable, sondeo controlado y antiphishing.
cadena de servicio
Token Exchange / on-behalf-of
Audiencia por salto, actor y correlación.
Ecosistema regulado
Código + PKCE + PAR/JAR/JARM
RAR, sender constraint, firma y auditoría reforzada.
Referencias técnicas
. 6749: el marco de autorización de 2.0. 2012.
. 6750: uso de de portador de 2.0. 2012.
. 7009: Revocación de de 2.0. 2013.
. 7519: web ( ). 2015.
. 7636: clave de prueba para el intercambio de códigos por parte de clientes públicos de . 2015.
. 7662: Introspección de 2.0. 2015.
. 8252: 2.0 para aplicaciones nativas. 2017.
. 8414: Metadata del 2.0. 2018.
. 8628: Device Authorization 2.0. 2019.
. 8693: 2.0. 2020.
. 8705: vinculados a certificados y autenticación de cliente Mutual- de 2.0. 2020.
. 8725: Mejores prácticas actuales de web . 2020.
. 9101: Solicitud de autorización asegurada por . 2021.
. 9126: Pushed Authorization . 2021.
. 9068: perfil para 2.0. 2021.
. 9207: Identificación del issuer del 2.0. 2022.
. 9396: Rich Authorization de 2.0. 2023.
. 9449: 2.0 que demuestra proof-of-possession. 2023.
. 9700: mejores prácticas actuales para la seguridad de 2.0. 2025.
. 9701: Respuesta de para la introspección de de . 2025.
. 9728: Metadata de recursos protegidos de 2.0. 2025.
Grupo de trabajo . El marco de autorización 2.1 - Internet-Draft, versión consultada en 2026.
Microsoft aprende. Autenticación de Azure Management, validate- , validate-azure-ad- y políticas de identidad administrada.
Documentación Axway. Servicios 2.0, autenticación de clientes y validación de en .
Fundación OpenID. Perfil de seguridad de nivel financiero y especificaciones OpenID Connect, cuando corresponda al ecosistema.
Nota de actualización
evoluciona a través de , mejores prácticas actuales, perfiles y borradores. Antes de implementar un flujo o una política, valide la especificación actual, la documentación de la versión del producto y el comportamiento en un entorno autorizado. Trate los borradores de Internet como un trabajo en progreso, no como reemplazos automáticos de los .