🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónAutenticación y autorización de una API
5 tareas · 40 min · Principiante
Guacamaya Seguros va a abrir su API a 240 corredores externos. Antes de que nadie escriba una línea más, te piden que leas cómo decide la API quién eres y qué puedes hacer: los clientes que obtienen tokens, los permisos que se les conceden y la tabla de endpoints con lo que cada uno comprueba. Todo es lectura de documentos de diseño; no se prueba nada contra ningún sistema.
Objetivo de la sala
Guacamaya Seguros va a abrir su API a 240 corredores externos. Antes de que nadie escriba una línea más, te piden que leas cómo decide la API quién eres y qué puedes hacer: los clientes que obtienen tokens, los permisos que se les conceden y la tabla de endpoints con lo que cada uno comprueba. Todo es lectura de documentos de diseño; no se prueba nada contra ningún sistema.Autenticar es comprobar quién llama: un token válido, firmado por quien corresponde, vigente y emitido para esta API. Autorizar es decidir qué puede hacer esa identidad, y se decide en dos niveles. El primero es la función: el permiso (el scope) dice que este cliente puede leer pólizas. El segundo es el objeto: de todas las pólizas que existen, esta identidad solo puede ver las suyas.
El primer nivel se resuelve con el permiso del token y suele estar bien hecho. El segundo no lo puede resolver el token, porque el token no sabe qué póliza se pedirá mañana: lo resuelve el servicio al leer el dato, comparando el dueño del recurso con la identidad de la petición. La falla de olvidarlo es la primera del catálogo de riesgos de APIs de OWASP de 2023 (API1:2023, autorización rota a nivel de objeto) y es la que más aparece en las revisiones de diseño.
Responde para continuar
El token de un corredor trae el permiso para leer pólizas. ¿Qué más debe comprobar la API antes de entregar una póliza concreta?
Ver pista de ayuda
El permiso dice qué tipo de cosas puede leer; falta decidir cuáles de todas ellas.
Abre diseno/endpoints.txt. La última columna dice, endpoint por endpoint, si el servicio comprueba que el recurso pertenece al corredor del token. Las filas de crear un recurso nuevo no tienen objeto previo que comprobar. Busca el endpoint que entrega un recurso existente, por su id, y no hace la comprobación. Escribe el identificador de la fila.
Responde para continuar
¿Qué endpoint entrega un recurso por su id comprobando solo el permiso, sin comprobar a quién pertenece? Escribe el id de la fila.
Ver pista de ayuda
Lee la última columna de la tabla y descarta las filas que dicen que no aplica.
Un arquitecto no propone la solución más elegante, propone la que cierra el riesgo con el menor costo para quien la va a construir. Para decidirlo se mira qué parte de la cadena ya existe: si otros endpoints del mismo servicio ya hacen la comprobación, la solución más barata suele ser hacer que el endpoint que falta la use igual, no rediseñar el sistema.
Lee diseno/notas-de-diseno.txt: explica cómo se identifican las pólizas y qué supuso el equipo. Una suposición que nadie ha comprobado no es un control. Después compara las tres propuestas.
Responde para continuar
¿Cuál es el cambio más barato que cierra el riesgo del endpoint que solo mira el permiso?
Ver pista de ayuda
Una de las tres reutiliza algo que ya existe y las otras dos o no cierran el riesgo o cuestan semanas.
Para obtener un token hay varios flujos de OAuth 2.0, y la elección depende de quién es el cliente. Una aplicación de navegador o móvil no puede guardar un secreto, así que usa el flujo de código de autorización con PKCE (RFC 7636): el token no viaja por la barra de direcciones y el código solo sirve a quien lo pidió. Un servidor de un aliado, que sí guarda secretos, usa credenciales de cliente.
La guía de seguridad actual de OAuth 2.0 (RFC 9700, enero de 2025) desaconseja el flujo implícito, que entrega el token directamente en la respuesta del navegador, porque ese token se filtra con facilidad. En diseno/clientes-oauth.txt está la lista de clientes de Guacamaya con su flujo y la vida de su token.
Responde para continuar
¿Qué cliente obtiene sus tokens con el flujo implícito? Escribe su identificador.
Ver pista de ayuda
Mira la tercera columna de la tabla de clientes.
El principio de menor privilegio también se aplica a los permisos de los clientes: cada cliente recibe solo los que necesita su función. Un permiso administrativo en un cliente que usan corredores externos es una puerta abierta a una función que no es suya, aunque nadie la haya usado todavía.
En diseno/permisos-por-cliente.txt está lo que se concede a cada cliente y, al final, qué hace cada permiso. Compara las funciones de los corredores con lo que ese archivo les concede.
Responde para continuar
¿Qué permiso de función interna de Guacamaya tiene concedido un cliente que usan los corredores? Escríbelo tal cual.
Ver pista de ayuda
Lee el significado de cada permiso al final del archivo y busca el que no es trabajo de un corredor.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.