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
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 , 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.
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, ,, 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 , consultando la actual solo para obtener orientación adicional.
Objetivos de aprendizaje
Explique el problema de delegación resuelto por y sus límites.
Distinga propietario de recursos, cliente, y .
Diferenciar de autorización, de , introspección, revocación y .
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 .
Diagnosticar invalid_request, invalid_client, invalid_grant, invalid_token y insufficient_scope.
Estructura del capítulo
16.1 El problema que resuelve
16.2 Roles y límites de confianza
16.3 , 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 del y recurso protegido
16.22 en , Axway y
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
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. 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
otorga autoridad sobre los recursos
Trate el consentimiento como una autorización sin restricciones.
solicitar y usar
almacenar secreto en la aplicación incapaz de protegerlo.
emite y publica
emitir una audience amplia y aceptar de redireccionamiento flexible.
valida el y autoriza la operación
Acepte solo porque la firma es válida.
16.3 , 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 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 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.
canal tipico
Propósito
Autorización
front-channel
interacción del usuario y emisión de códigos de autorización.
back-channel
intercambio de grants y autenticación de clientes.
back-channel
consulta de actividad y atributos de .
Revocación
back-channel
invalidación del según la política.
back-channel
registro protegido de parámetros de autorización.
lectura autenticada en fuente
descubrimiento de 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 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
/ corto, de un solo uso y vinculado al cliente/redireccionamiento.
autoridad temporal, audience y .
credencial de relativa larga duración; Requiere protección y rotación.
Cliente
afirmación sobre autenticación, no credencial genérica.
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: es una prueba por transacción, no una credencial permanente.
Elemento
donde aparece
Requisito
code_verifier
solicitud de
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 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 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 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 .
Autenticación de cliente
certificado y clave
fuerte conexión con el canal
Terminación y ciclo de certificados.
ninguno
sin autenticación
Apto para clientes públicos.
Requiere y 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 .
Tipo
Clasificación
Almacenamiento preferido
Flujo
Web con
confidencial
en el servidor; de sesión del navegador
+ .
puro
publico
memoria cuando sea posible; minimizar la persistencia
+ .
con mejor amiga
mejor amiga confidencial
en ; protegida
+ .
Aplicación nativa
publico
almacenamiento seguro del sistema
+ 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, , 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 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
+ user_code
secreto; user_code corto y caducable.
Interacción
verificación_uri
mostrar el contexto del cliente y prevenir el .
sondeo
respetar el intervalo y la desaceleración.
Conclusión
/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 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 antiguo.
Restricción del remitente
unirse a una clave
validar / 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 para esta o ?
¿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?
type
¿Es el artefacto un esperado, no un u otro ?
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 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
alterado o confusión de algoritmo.
issuer exacto
de dominio que no es de confianza.
audience
reutilizar en otra .
exp/nbf/reloj
utilizar fuera de la ventana permitida.
tipo/perfil
confusión entre , y otros .
y
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
enviando parámetros
back-channel autenticado y acortada.
solicitar contenido
integridad, origen y posible confidencialidad.
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
certificado de conexión
fuerte para clientes y servicios controlados
, y terminación .
clave y prueba bajo petición
aplicable sin certificado de cliente
Validación de , reloj, jti y clave.
Portador
ninguno
simplicidad y compatibilidad
después de la copia del .
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 original
sencillo
amplia audience, fugas y acoplamiento.
específico por salto
complejidad y correlación de las políticas.
Sólo credencial de servicio
separa el
Pierde el contexto del usuario cuando es necesario.
16.21 del y recurso protegido
Los 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 simplifican la rotación y la interoperabilidad, pero no deberían convertir el descubrimiento en confianza automática.
Los 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 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
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 , validate- y validate--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 , el , 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 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
S256 y código de un solo uso
Fallos y reutilización del verificador.
/inyección de inicio de sesión
estado vinculado a la sesión
estado ausente, divergente o consumido.
AS mix-up
issuer vinculado y
issuer de respuesta y utilizados.
de
, / y detección
jti, huella digital y origen.
Actualizar robo de
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
registrado y 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 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 .
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, , 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
válido no se requiere autoridad
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 , 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
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 :, 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
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é 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
Credencial presentada al para ejercer la autoridad.
breve y de un solo uso intercambiada en el .
Componente que evalúa la autorización y emite .
utilizable por cualquier poseedor del valor.
Aplicación que solicita y utiliza autoridad.
en la que la solicitud actúa por cuenta propia.
Cliente capaz de proteger las credenciales de autenticación.
Artefacto utilizado en el sondeo de Device Authorization .
Prueba mediante solicitud que vincula el a una clave.
Representación de autorización utilizada para obtener el .
Consulta autenticada sobre actividad y atributos de .
Solicitud de autorización protegida en .
Respuesta de autorización protegida en .
estructurado y firmado según perfil.
Envío de parámetros por adelantado vía back-channel.
Prueba que vincula el intercambio de código con la instancia del cliente.
El cliente no puede mantener el secreto de manera confiable.
Credencial utilizada para obtener nuevos .
Entidad capaz de otorgar acceso al recurso.
que acepta y protege los recursos.
Representación textual de la autoridad solicitada u otorgada.
vinculado a la prueba de una clave de cliente.
Valor que vincula solicitud y respuesta y ayuda contra .
para intercambiar un 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.
+
de redireccionamiento exacto, confidencial, de estado, protegido por y confidencial del cliente.
puro
+
Cliente público, refuerzo , corto y sin secreto.
de mayor riesgo
+ +
del lado del servidor, y HttpOnly/SameSite.
Aplicación nativa
+
Navegador externo, aplicación/enlace universal y almacenamiento del sistema.
Servicio a servicio
private_key_jwt, o identidad de carga de trabajo; Audiencia mínima.
Dispositivo limitado
Device Authorization
Código de usuario caducable, sondeo controlado y .
cadena de servicio
/ on-behalf-of
Audiencia por salto, actor y correlación.
Ecosistema regulado
Código + + //
RAR, sender constraint, firma y auditoría reforzada.
Referencias técnicas
. 6749: el marco de autorización de . 2012.
. 6750: uso de de portador de . 2012.
. 7009: Revocación de de . 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 . 2015.
. 8252: para aplicaciones nativas. 2017.
. 8414: del . 2018.
. 8628: Device Authorization . 2019.
. 8693: . 2020.
. 8705: vinculados a certificados y autenticación de cliente Mutual- de . 2020.
. 8725: Mejores prácticas actuales de web . 2020.
. 9101: Solicitud de autorización asegurada por . 2021.
. 9126: Pushed Authorization . 2021.
. 9068: perfil para . 2021.
. 9207: Identificación del issuer del . 2022.
. 9396: Rich Authorization de . 2023.
. 9449: que demuestra proof-of-possession. 2023.
. 9700: mejores prácticas actuales para la seguridad de . 2025.
. 9701: Respuesta de para la introspección de de . 2025.
. 9728: de recursos protegidos de . 2025.
Grupo de trabajo . El marco de autorización 2.1 - Internet-Draft, versión consultada en 2026.
Microsoft aprende. Autenticación de , validate-, validate--ad- y políticas de .
Documentación Axway. Servicios , autenticación de clientes y validación de en .
Fundación OpenID. Perfil de seguridad de nivel financiero y especificaciones , 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 .