JF0x0r's Blog
PortfolioBug Hunter ProfileGithub
  • Whoami
  • Aprender Go
    • 🐺¿Qué es GO 🦊
    • 🧠Packages
    • 🎃Modules
    • 🐢Variable - Tipos de Datos
    • 🧌Operadores Matematicos - Lógicos
    • 🥥Flujo If, For, While, Switch
    • 🌼Struct - Methods vs Functions
    • 📽️POO (Programming Oriented Object)
    • 🐯Interface - Interfaces
    • 🎱Punteros * &
    • 🐸Vectores/Arrays, Slices y Maps
    • 🫀El uso de Make en channels, slices, maps
    • 🧛‍♀️Errores en Go - Uso de err ≠ nil
    • 👁️GO Defer
    • 🦷GO Panic
    • 🦋GO Recover
    • 🐦Structs
    • 🐔WaitGroups Go
  • Pentester Lab
  • Guía de Estudio Hacking
  • Bug Bounty
    • 🍓Adobe
    • 🚀Nasa VDP
    • 🧀Figma
      • 🐙User Enumeration via Authentication Flow - Email Exposure
    • 🫐Syfe
    • 🍉Etoro
    • 🥭Glance Networks
  • PortSwigger WebAcademy
    • Server Side Topics
      • SQL Injection
        • 🐔Laboratorio: Inyección SQL ciega
        • 🍫Laboratorio: Datos Ocultos - Aprendiz
        • 🦍Laboratorio: Omitir inicio de sesión Bypass
        • 🔏Laboratorio: Calcular numero Columnas con UNION
        • 🪖Laboratorio: ataque UNION de inyección SQL , búsqueda de una columna que contiene texto
        • 🐧Laboratorio: ataque UNION de inyección SQL , recuperando datos de otras tablas
        • 🧛Laboratorio: ataque UNION de inyección SQL , recuperando múltiples valores en una sola columna
        • 🐬Laboratorio: Inyección SQL con errores condicionales
        • 🐈‍⬛Laboratorio: Inyección SQL basada en errores visibles
        • 💃Laboratorio: Inyección SQL ciega con retrasos de tiempo
        • 🐆Laboratorio: Inyección SQL ciega con retardos de tiempo y recuperación de información
        • 👑Laboratorio: Inyección SQL ciega con interacción fuera de banda
        • 🏞️Laboratorio: ataque de inyección SQL, consulta del tipo y versión de la base de datos en Oracle
        • 🪻Laboratorio: ataque SQLi, consulta del tipo y versión de la base de datos en MySQL y Microsoft
        • 💀Laboratorio: ataque de inyección SQL, enumerando el contenido de la base de datos en bases de datos
        • 🧀Laboratorio: Inyección SQL con omisión de filtro mediante codificación XML
      • Authentication
        • 🐟Laboratorio: Enumeracion de usernames via diferentes responses
        • 👩‍🦽Laboratorio: enumeración de nombres de usuario a través de respuestas sutilmente diferentes
        • ™️Laboratorio: enumeración de nombres de usuario mediante tiempos de respuesta
        • 🦷Laboratorio: protección de fuerza bruta rota, bloqueo de IP
        • 🧢Laboratorio: enumeración de nombres de usuario mediante bloqueo de cuenta
        • 🦠Laboratorio: protección de fuerza bruta rota, múltiples credenciales por solicitud
        • 🐛Laboratorio: bypass simple 2FA
        • 🐯Laboratorio: lógica rota 2FA
        • 👓Laboratorio: 2FA bypass usando un ataque por fuerza bruta
        • 👽Lab: Brute-forcing a stay-logged-in cookie
        • 🦋Laboratorio: Offline password cracking
        • 🧌Laboratorio: Password reset broken logic
        • 👁️Laboratorio: Basic password reset poisoning
        • 👂Laboratorio: Password reset poisoning via middleware
        • 🥻Laboratorio: Fuerza bruta de contraseña mediante cambio de contraseña
        • 🫁Laboratorio: Envenenamiento por restablecimiento de contraseña mediante etiquetas colgantes
      • Path Traversal
        • 🛻Laboratorio: File path traversal, simple case
        • 🦅Laboratorio: File path traversal, traversal sequences blocked with absolute path bypass
        • 🦉Laboratorio: recorrido de ruta de archivo , secuencias transversales eliminadas de forma no recursiv
        • 🍊Laboratorio: File path traversal, traversal sequences stripped with superfluous URL-decode
        • 🕷️Laboratorio: File path traversal, validation of file extension with null byte bypass
      • Command Injection OS
        • 🖥️Laboratorio: OS command injection, simple case
        • 🐹Laboratorio: Blind OS command injection with time delays
        • 👹Blind OS command injection with output redirection
        • 🧛‍♂️Laboratorio: Inyección ciega de comandos del SO con exfiltración de datos fuera de banda
        • 🦟Laboratorio: Inyección ciega de comandos del sistema operativo con interacción fuera de banda
      • Business Logic Vulnerabilities
        • 🧝‍♂️Laboratorio: Confianza excesiva en los controles del lado del cliente
        • 🧙‍♂️Laboratorio: Vulnerabilidad lógica de alto nivel
        • 🤩Laboratorio: Vulnerabilidad falla lógica de bajo nivel
        • 🎻Laboratorio: Manejo inconsistente de entradas excepcionales
        • 🏓Laboratorio: Inconsistent security controls
        • 🥭Laboratorio: Aislamiento débil en terminales de doble uso
        • 🧑‍✈️Laboratorio: Validación de flujo de trabajo insuficiente
        • 📀Laboratorio: Omisión de autenticación a través de una máquina de estado defectuosa
        • 🐦‍⬛Laboratorio: Aplicación defectuosa de las reglas comerciales
        • 🌵Laboratorio: falla en la lógica del dinero infinito
        • 🥑Laboratorio: omisión de autenticación mediante Oracle de cifrado
        • 🧊Lab: Bypassing access controls using email address parsing discrepancies
      • Information Disclosure Vulnerabilities
        • 🧟Laboratorio: Divulgación de información en mensajes de error
        • 🌵Laboratorio: divulgación de información en la página de depuración
        • 🍅Laboratorio: Divulgación del código fuente a través de archivos de respaldo
        • 🤿Laboratorio: omisión de autenticación mediante divulgación de información
        • 🏑Laboratorio: Divulgación de información en el historial de control de versiones
      • SSRF - Server-Side Request Forgery
        • 🧅Laboratorio: SSRF básico frente a otro sistema back-end
        • 🐮Laboratorio: SSRF con filtro de entrada basado en lista negra
        • 🌶️Laboratorio: SSRF con filtro de entrada basado en lista blanca
        • 💽Laboratorio: SSRF with filter bypass via open redirection vulnerability
        • ☎️Laboratorio: SSRF ciega con detección fuera de banda
        • 🥬Laboratorio: SSRF ciega con explotación Shellshock
        • 🐦Laboratorio: SSRF básico contra el servidor local
      • Acess Control
        • 🍑Laboratorio: funcionalidad de administración desprotegida
        • 🍉Laboratorio: funcionalidad de administración desprotegida con URL impredecible
        • 🐱Laboratorio: rol de usuario controlado por el parámetro de solicitud
        • 🐒Laboratorio: La función del usuario se puede modificar en el perfil del usuario
        • 🐴Laboratorio: el control de acceso basado en URL se puede eludir
        • 🍋Laboratorio: El control de acceso basado en métodos se puede eludir
        • 🎾Laboratorio: ID de usuario controlado por parámetro de solicitud
        • 🧆Laboratorio: ID de usuario controlado por parámetro de solicitud, con ID de usuario impredecibles
        • 🦑Laboratorio: ID de usuario controlado por parámetro de solicitud con fuga de datos en redirección
        • 😎Laboratorio: ID de usuario controlado por parámetro de solicitud con divulgación de contraseña
        • 🍗Laboratorio: Referencias directas a objetos inseguros
        • 🧀Laboratorio: proceso de varios pasos sin control de acceso en un solo paso
        • ⛄Laboratorio: Control de acceso basado en referentes
      • File Upload Vulnerabilities
        • 🛼Laboratorio: ejecución remota de código mediante carga de shell web
        • 🥦Laboratorio: carga de shell web mediante omisión de restricción de tipo de contenido
        • ⛵Laboratorio: carga de shell web mediante recorrido de ruta
        • 🛝Laboratorio: carga de shell web mediante omisión de la lista negra de extensiones
        • ⚾Laboratorio: carga de shell web a través de una extensión de archivo ofuscada
        • 🪖Laboratorio: carga de shell web mediante condición de carrera
      • Web Cache Deception
        • 🧀Laboratorio: Explotación del mapeo de rutas para el engaño de caché web
        • 🍨Laboratorio: Explotación de delimitadores de ruta para el engaño de caché web (v2)
        • 🪇Laboratorio: Explotación de la normalización del servidor de origen para el engaño de la caché web
        • 🍺Laboratorio: Explotación de la normalización del servidor de caché para el engaño de la caché web
        • ⚽Laboratorio: Explotación de reglas de caché de coincidencia exacta para el engaño de caché web
      • API Testing
        • 🥨Laboratorio: Explotación de un punto final de API mediante documentación
        • 🛝Laboratorio: Cómo encontrar y explotar un punto final de API no utilizado
        • 🧤Laboratorio: Explotación de una vulnerabilidad de asignación masiva
        • 🍒Laboratorio: Explotación de la contaminación de parámetros del lado del servidor en una cadena de co
        • 🥕Laboratorio: Explotación de la contaminación de parámetros del lado del servidor en una URL REST
      • XXE Injection - XML Entity
        • 🏸Laboratorio: Exploiting XXE using external entities to retrieve files
        • 🥾Laboratorio: Exploiting XXE to perform SSRF attacks
        • 🧑‍🎤Laboratorio: Blind XXE with out-of-band interaction
        • 🦉Laboratorio: Blind XXE with out-of-band interaction via XML parameter entities
        • 🌋Laboratorio: Exploiting blind XXE to exfiltrate data using a malicious external DTD
        • 👾Laboratorio: Exploiting blind XXE to retrieve data via error messages
        • 🌍Laboratorio: Exploiting XXE to retrieve data by repurposing a local DTD
        • 🫀Laboratorio: Exploiting XInclude to retrieve files
        • 👁️Laboratorio: Exploiting XXE via image file upload
      • Race Conditions
        • 🗣️Mutexes Golang
        • ⛸️Laboratorio: Limit overrun race conditions
        • 👽Laboratorio: Bypassing rate limits via race conditions
        • 👩‍🦯Laboratorio: Multi-endpoint race conditions
        • 🧢Laboratorio: Single-Endpoint Race Conditions
        • 🐛Laboratorio: Partial Construction Race Condition
        • 🔩Laboratorio: Exploiting time-sensitive vulnerabilities
      • No-SQL Injection
        • 🪱Laboratorio: Detecting NoSQL injection
        • 💼Laboratorio: Exploiting NoSQL operator injection to bypass authentication
        • 🪖Laboratorio: Exploiting NoSQL injection to extract data
        • 🦺Laboratorio: Exploiting NoSQL operator injection to extract unknown fields
    • Client Side Topics
      • Cross-site scripting (XSS)
        • XSS Reflected
          • ⛑️Laboratorio: XSS reflejado en contexto HTML sin nada codificado
        • XSS Based DOM
          • 🍖Laboratorio: DOM XSS en document.write, el receptor usando la fuente location.search
        • XSS Stored
          • 🪢Laboratorio: Stored XSS into HTML context with nothing encoded
          • 🥌Laboratorio: Stored XSS into onclick event with angle brackets and double quotes HTML-encoded
    • Advanced Topics
      • 0Auth
      • Insecure Deserialization
        • 🧀Laboratorio: Modificar objetos en serie
        • 🧅Laboratorio: Modificar los tipos de datos en serie
        • 🎋Laboratorio: Usando funcionalidad de la aplicación para explotar la desserialización insegura
        • 🎯Laboratorio: Inyección arbitraria de objetos en PHP
        • 🍿Laboratorio: Inyección arbitraria de objetos en PHP
        • 🕸️Laboratorio: Exploiting Java deserialization with Apache Commons
        • 🥷Laboratorio: Exploiting PHP deserialization with a pre-built gadget chain
        • 🏈Laboratorio: Exploiting Ruby deserialization using a documented gadget chain
        • 🎄Laboratorio: Desarrollo de una cadena de gadget personalizada para la deserialización de Java
        • 👨‍🦽Laboratorio: Desarrollo una cadena de gadget personalizada para la deserialización de PHP
  • Hacking Certifications
    • ACP - APISec University
      • 🌍API Security Fundamentals 2025
      • 🫀OWASP API Security Top 10 and Beyond!
      • 🏓API Authentication
      • 🥥API Documentation Best Practices
      • 🌲Securing API Servers
Powered by GitBook
On this page
  • Auth0 Actors:
  • Quiz:
  • OAuth 2.0 Interaction patterns
  • 1. Authorization Code Flow (Code Flow)
  • 🔄 2. Refresh Token Flow
  • 🔐 3. Client Credentials Flow
  • Quiz:
  • JSON Web Tokens:
  • 🔐 ¿Qué es un JWT?
  • 🧩 1. Formatos
  • 🎯 2. Propósito
  • ⚙️ 3. Tipo
  • Este otro tipo de JWT además del bearer está POP/HoK
  • Quiz:
  • Scopes and Claims:
  • 🎯 ¿Qué es un Scope?
  • Ejemplo de scopes:
  • 🧾 ¿Qué son los Claims?
  • Hay tres tipos:
  • Ejemplo de payload de JWT:
  • Juntando SCOPE CON CLAIM:
  • Quiz:
  • API’s And Gateways:
  • 🎩 ¿Qué hace?
  • Api and gateways interactions:
  • 🪙 Token Exchange vs Embed vs Share
  • 1. 🌀 Token Exchange (Intercambio)
  • 2. 📦 Token Embed (Incrustado)
  • Token Share (Compartir)
  • Quiz:
  • QUIZ FINAL:
  1. Hacking Certifications
  2. ACP - APISec University

API Authentication



Auth0 Actors:

  • es en realidad de delegar acceso AUTH0, no de dar autenticación, mucho OJO.

Quiz:

Question 1
What was the main problem that led to the inception of OAuth
Companies had too many APIs to expose publicly for basic authentication to suffice
**Companies wanted to expose APIs that used authentication but didn't want 3rd parties to see the user's credentials**
Correct answer.
Companies wanted to create interoperability between APIs

Question 2
The Actors of OAuth 2.0 are
The client, the resource server, the authorization server and the resource holder
**The client, the resource server, the authorization server and the resource owner**
Correct answer.
The client, the resource server and the authorization server

Question 3
Who delegates to who in OAuth
The user delegates to the authorization server
The client delegates to the resource server
**The authorization server delegates to the client**
Correct answer.

OAuth 2.0 Interaction patterns

1. Authorization Code Flow (Code Flow)

Uso común: Aplicaciones web o móviles donde el usuario inicia sesión.

🧩 Resumen:

  • El usuario se autentica en el authorization server.

  • Se genera un authorization code.

  • La app (cliente) intercambia ese código por un access token (y a veces un refresh token).

✅ Ventaja: El token no pasa por el navegador ni la URL directamente, lo que mejora la seguridad.


🔄 2. Refresh Token Flow

Uso común: Para mantener la sesión del usuario sin pedirle que inicie sesión de nuevo.

🧩 Resumen:

  • Cuando el access token caduca, se usa un refresh token para obtener uno nuevo.

  • Solo funciona si el flujo inicial (como el code flow) entregó un refresh token.

✅ Ventaja: Mejora la experiencia de usuario al evitar re-autenticaciones.


🔐 3. Client Credentials Flow

Uso común: Comunicación app-to-app o backend-to-backend, sin usuario.

🧩 Resumen:

  • El cliente (app) se identifica usando su client ID y secret.

  • El servidor entrega un access token directamente.

  • No hay usuario final involucrado.

✅ Ventaja: Ideal para APIs internas, microservicios o tareas automatizadas.


Quiz:

Question 1
In the OAuth Code flow, user authentication happens:
Before the user is redirected to the authorization server
After the user has been redirected to the authorization server
Correct answer.
After the user has been redirected back from the authorization server

Question 2
One statement is NOT true about the authorization code
It is returned on the query string to the client in the redirect to the callback endpoint
It is short-lived
It can be used to refresh the access token
Correct answer.
It is bound to the client it was issued to

Question 3
The refresh token is used to
Obtain new access tokens
Correct answer.
Refresh the user's SSO session
Refresh the client's credentials

Question 4
The Client Credentials flow issues:
An authorization code and an access token
An access token and a refresh token
Only an access token
Correct answer.

JSON Web Tokens:

🔐 ¿Qué es un JWT?

Un JSON Web Token (JWT) es un token compacto y auto-contenido usado para transmitir información entre dos partes de forma segura como un access token o ID token.


🧩 1. Formatos

  • ✅ Cómo leer su contenido: Es un string en base64 con tres partes: header, payload y signature.

  • ✅ Cómo validarlo: Usando la firma (normalmente HMAC o RSA), verificás que no haya sido alterado.


🎯 2. Propósito

  • 🔒 ¿Para quién es el token? → Identificado con el claim aud (audience).

  • 🧠 ¿Cuál es su uso? → Por ejemplo, autenticación, autorización, etc.

  • 🌍 ¿A dónde lo puedo enviar? → Solo a recursos que confíen en el issuer del token.


⚙️ 3. Tipo

  • ⚠️ Palabra sobrecargada, puede referirse al tipo de token (access, id, refresh) o al tipo de transmisión (Bearer, etc).

  • 🚀 ¿Cómo se transmite? → Comúnmente en el header Authorization: Bearer <token>.

    • Pero super importante enviarlo bajo canales cifrados, like TLS

    • Bearer token es como el dinero, si tengo dinero puedo ir a una tienda o donde sea elegir algo y comprarlo con mi cash, en este caso bearer es así, puedo usarlo siempre y cuando esté valido y sea dinero real (metafora), podré usarlo en las auths.

  • by reference:

Este otro tipo de JWT además del bearer está POP/HoK

que basicamente son como una tarjeta de credito puedes implementarlo pero debes demostrar que dices ser el usuario que dices ser, pasa tal cual como con las credit card no puedo pagar con una credit card que no es mia y ademas debo financiarle dinero del banco a la tarjeta.

  • Significa que se deben enviar dos partes de DPoP dentro del header Authorization.

  • A JWT IS NOT A PROTOCOL, is a format y no es un type.

Quiz:

Question 1
Which are the three axes used to define a token
Format, purpose and type
Correct answer.
Format, purpose and encoding
Encoding, type and purpose
Encryption, encoding and transport

Question 2
Which of the following statements is NOT true about JWTs
All access tokens are JWTs
Correct answer.
Clients should never decode access tokens, even if they are JWTs
JWTs are not suitable to be sent on the Internet for PII reasons
A JWT consists of three parts, header, payload and signature

Question 3
What is the key benefit of using PoP tokens as access tokens
They are encrypted and cannot be read by anyone but the API
They can only be sent by the client they were issued to
Correct answer.
They point to an entry in the database that only the authorization server can decode
They can be used to obtain more access tokens

Question 4
Access tokens have an audience, what does that mean:
They can only be understood by the entities listed in the audience claim
They can only be sent by an entity listed in the audience claim
They are issued by the entity in the audience claim
They should only be accepted by the entities listed in the audience claim
Correct answer.

Scopes and Claims:

🎯 ¿Qué es un Scope?

Los scopes (alcances) definen qué permisos solicita una aplicación al acceder a una API en nombre de un usuario o cliente.

El server authorization final es el que define si el scope se integra con los issues definidos.

Ejemplo de scopes:

scope=read:user write:posts

🔓 Esto significa:

  • read:user: puede leer la info del usuario.

  • write:posts: puede crear o modificar posts.

🔐 Se usan principalmente durante el OAuth authorization request:

GET /authorize?client_id=abc123&scope=read:user write:posts...

📌 Los scopes limitan lo que puede hacer el token. Son una especie de "contrato" entre el usuario, la app y el API.

🧾 ¿Qué son los Claims?

Los claims son los datos dentro del JWT. Son las piezas de información que se transmiten en el token firmado.

Hay tres tipos:

  1. Registered claims (estándar):

    • iss: quién emitió el token.

    • sub: sujeto (ID del usuario).

    • exp: fecha de expiración.

    • aud: audiencia.

      • aud (de audience) es un claim registrado en los JWT que indica quién está destinado a recibir o consumir ese token.

      Es decir, es el identificador de la API o sistema que debe aceptar y validar ese token.

      🧠 ¿Por qué es importante?

      Porque si un token llega a una API que no está en la audiencia, debería ser rechazado. Esto evita que un token válido para un servicio A sea usado indebidamente en un servicio B (replay attacks).

  2. Public claims:

    • Ej: name, email, picture.

    • Info general que puede usar el receptor del token.

  3. Private claims:

    • Claims definidos por tu sistema, como role, tenant_id, plan.

Ejemplo de payload de JWT:

{
  "sub": "1234567890",
  "name": "Felipe",
  "role": "admin",
  "exp": 1712775472
}

Juntando SCOPE CON CLAIM:

Quiz:

Question 1
Which of the following statements is NOT true about scopes
They are used to express client privileges
The client requests a certain set of scopes to be issued in the access token
The scope carries values that are true about the user
Correct answer.
The user may consent to the scopes being issued

Question 2
Why are claims useful to pass in access tokens
They enable the API to make fine grained access control decisions related to the user
Correct answer.
They define policies about which access should be given
They always express the groups the user is in
They are required by the client in order to process the token

#EN ESPAÑOL ->

Pregunta 1
¿Cuál de las siguientes afirmaciones NO es cierta acerca de los scopes
Se utilizan para expresar los privilegios del cliente
El cliente solicita que se emita un determinado conjunto de scopes en el token de acceso
**El scope lleva valores que son verdaderos sobre el usuario**
Respuesta correcta.
El usuario puede dar su consentimiento para que se emitan los ámbitos

Pregunta 2
¿Por qué es útil incluir claims en los tokens de acceso?
**Permiten a la API tomar decisiones de control de acceso detalladas en relación con el usuario.**
Respuesta correcta.
Definen políticas sobre el acceso que se debe otorgar
Siempre expresan los grupos a los que pertenece el usuario
Son requeridas por el cliente para procesar el token

API’s And Gateways:

un API Gateway es como el portero de discoteca de tu sistema de APIs:


🎩 ¿Qué hace?

  1. Recibe todas las solicitudes de los clientes antes de que lleguen a tu backend.

  2. Valida, filtra, transforma o enruta esas solicitudes hacia el microservicio o backend correspondiente.

  3. Puede agregar seguridad, como:

    • Autenticación y autorización (Bearer token, OAuth2, JWT, etc.)

    • Validación de tokens (como en el phantom token flow)

    • Rate limiting, logging, CORS, etc.

  • Gateway con Auth0 añadido:

  • pero añadimos el phantom token flow que es un nuevo pattern añadido:

    • El Phantom Token Flow es un patrón utilizado principalmente en arquitecturas API Gateway + Resource Server, cuando se usan tokens de acceso opacos (opaque tokens) con OAuth 2.0. Es una técnica para no exponer información sensible de los tokens directamente al cliente.

    ¿Para qué se usa?

    • Evitar que el token tenga claims sensibles como email, roles, permissions, etc., en el lado del cliente.

    • Centralizar la validación en el API Gateway.

    • Simplificar la lógica del backend (no necesita decodificar ni validar tokens).

Api and gateways interactions:

🪙 Token Exchange vs Embed vs Share

1. 🌀 Token Exchange (Intercambio)

  • ¿Qué es? Cambiar un token por otro diferente, pero relacionado.

  • ¿Por qué se hace? Para obtener un token más específico, seguro o con menos privilegios.

  • Ejemplo típico:

    • Un cliente obtiene un Access Token del Authorization Server.

    • Ese token llega al API Gateway.

    • El Gateway lo intercambia (exchange) por un token interno más restringido (ej. con menos scopes, más corto, etc.), que es el que usa para llamar a servicios internos.

🔒 Evita exponer directamente tokens externos a servicios internos.

Se usa en phantom token flow (el token externo es opaco, el interno es JWT).


2. 📦 Token Embed (Incrustado)

  • ¿Qué es? Incluir (embed) el token en otro objeto o contexto.

  • ¿Dónde se ve?

    • En un JWT, donde los claims están embebidos directamente (aud, exp, sub, etc.).

    • En tokens usados dentro de headers de HTTP: Authorization: Bearer <token> es una forma de "embed" el token en la solicitud.

  • Ejemplo visual:

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR...",
  "token_type": "Bearer",
  "expires_in": 3600
}

Token Share (Compartir)

  • ¿Qué es? Usar el mismo token entre distintos componentes.

  • Riesgo: Cuanto más compartes un token, más superficie de ataque.

  • Ejemplo:

    • Un front recibe un token y lo pasa directamente a muchos microservicios.

    • Si un microservicio se ve comprometido, el token también lo está.

  • Por eso se evita y se prefiere hacer un exchange o usar phantom token flow.

  1. Introspecti0n, una req valida con todo normal y se manda:

  2. instrospection with exchange, modificamos el content type:

  3. INstrospection, embebemos el JWT dentro del JSON:

  4. instrospection, para intercambiar el token:

Quiz:

Question 1
Which is the standard flow to use in a gateway to know what's inside an opaque token
Interrogation
Introspection
Correct answer.
Inspection
Evaluation

Question 2
The phantom token flow defines a pattern to:
Let an API call another API
Let tokens be exchanged for less powerful tokens
Hide sensitive data on the Internet but expose it internally
Correct answer.
Encrypt JWT tokens

Question 3
There are three methods to use tokens for API to API calls
Exchange, embed, share
Correct answer.
Exchange, swap, share
Exchange, convert, split
Embed, share, re-issue

Question 4
What is good practice for the gateway when it comes to authorization
To evaluate all the token's claims and assure that the request will be successful
To duplicate the logic of the API to be able to make a fine grained authorization decision
To just look at the token validity and let the API make the full authorization decision
To validate the token and inspect the scopes to perform a coarse grained authorization decision
Correct answer.

QUIZ FINAL:

Question 1
Which of the following statements is true about token based architectures
It uses basic authentication to authenticate against APIs
It depends on external token from outside the organization to provide access
It provides fundamentals to build a zero trust architecture
Correct answer.
It requires mutual TLS to be used to provide machine authentication

Question 2
Which HTTP request header is used to pass the access token
The Token header
The Authentication header
The Content-Type header
The Authorization header
Correct answer.

Question 3
What does the client need to send along with an access token of type Bearer when calling the API?
Nothing
Correct answer.
A signature
The refresh token

Question 4
Which OAuth flow is most suitable for web applications
Client Credentials flow
Refresh flow
Web Authentication Flow
Code flow
Correct answer.

Question 5
Who is the only allowed final recipient (audience) of a refresh token?
The Authorization Server
Correct answer.
The API
The Gateway
The client

Question 6
What is the difference between scopes and claims?
Claims don't have values but scopes do
Scopes don't have values but claims do
Correct answer.
Claims can never be issued in the access token but scopes can
Scopes can never be issued in the access token but claims can

Question 7
Why do we say that the access token is the identity API for the APIs
The access token contains claims that can be tailored for the APIs identity needs
Correct answer.
The access token is JWT and therefore developer friendly
The access token is the key for API access

Question 8
What are the two base OAuth endpoints called
Authentication endpoint and token endpoint
Authorization endpoint and token endpoint
Correct answer.
Authorization endpoint and introspection endpoint
Token endpoint and introspection endpoint

Question 9
How does a user authenticate when the client starts a code flow
Using username password
Always using multi factor authentication
According to what the client requests
It is not defined by the OAuth specification
Correct answer.

Question 10
Why are scopes helpful for application (client) level permissions
Because they limit what the client can do, no matter who logs in
Correct answer.
Because they are easy to express in JWTs
Because they contain values that the API can use for fine grained access contro
PreviousOWASP API Security Top 10 and Beyond!NextAPI Documentation Best Practices
🏓