# Libro de trabajo — Ruta 03

## Diseño seguro de identidad, autorización y APIs

Uso educativo: caso ficticio de reserva de espacios. Todos los actores, valores y recursos son ejemplos sin relación con entidades reales.

Dedicación: seis sesiones de 40 minutos estimados (4 h) y este laboratorio opcional de 60 minutos. No hay evaluación obligatoria ni calificación. Puedes resolverlo documentalmente; no requiere una API operativa ni credenciales.

## Escenario y reglas didácticas

- U-01: solicitante de G-A. U-02: coordinación de G-A. U-03: integrante de G-B.
- S-AVISO: identidad técnica que entrega notificaciones, sin permiso de aprobación.
- R-A: reserva de U-01, 30 asistentes, pendiente, versión 3.
- E-01: confirmación de entrega de un aviso. No confirma ni aprueba la reserva.
- Más de 20 asistentes: requiere otra persona aprobadora.
- Capacidad: 1 a 50 asistentes. Duración: 30 a 180 minutos.
- Frescura del evento: 5 minutos como parámetro del ejercicio; documentar tolerancia de reloj.
- Al aprobar: verificar versión vigente, permisos, autenticación reforzada, disponibilidad y evidencia duradera.

## Plantillas por sesión

1. [13-mapa-identidades](13-mapa-identidades.md)
2. [14-contrato-tokens-sesiones](14-contrato-tokens-sesiones.md)
3. [15-matriz-autorizacion](15-matriz-autorizacion.md)
4. [16-contrato-api](16-contrato-api.md)
5. [17-contrato-eventos](17-contrato-eventos.md)
6. [18-operaciones-criticas](18-operaciones-criticas.md)

## Desarrollo del laboratorio

### 01. Identidades y sesión · 10 minutos

Asigna propósito y alcance a U-01, U-02, U-03 y S-AVISO. Define el contrato de tokens y qué ocurre tras una baja.

Entregable: Inventario de identidades y contrato de validación.

- Mi decisión:
- Justificación:
- Supuestos y riesgo pendiente:

### 02. Permisos y aislamiento · 10 minutos

Cruza sujeto, grupo, acción, recurso y estado. Incluye consulta directa, listado y exportación.

Entregable: Matriz de decisiones permitidas y denegadas.

- Mi decisión:
- Justificación:
- Supuestos y riesgo pendiente:

### 03. Contrato de API · 10 minutos

Define campos de creación y respuesta mínima. Decide cómo impedir dos reservas simultáneas de la misma sala.

Entregable: Contrato de entrada, salida, límites y conflicto.

- Mi decisión:
- Justificación:
- Supuestos y riesgo pendiente:

### 04. Eventos confiables · 10 minutos

Especifica autenticidad, frescura y efecto de E-01. Analiza un duplicado y una caída entre procesamiento y respuesta.

Entregable: Contrato de eventos y política de reintentos.

- Mi decisión:
- Justificación:
- Supuestos y riesgo pendiente:

### 05. Aprobación y auditoría · 10 minutos

Vincula revisión, versión, persona aprobadora y evidencia. Define el resultado si R-A cambia mientras U-02 la revisa.

Entregable: Transición de estado con condiciones y registro duradero.

- Mi decisión:
- Justificación:
- Supuestos y riesgo pendiente:

### 06. Trazabilidad y revisión · 10 minutos

Relaciona cada amenaza con un control, una prueba y un resultado. Separa evidencia ejecutada de pruebas propuestas.

Entregable: Matriz final amenaza → control → prueba → evidencia.

- Mi decisión:
- Justificación:
- Supuestos y riesgo pendiente:

## Matriz final de trazabilidad

| Amenaza | Requisito | Sujeto y recurso | Control | Prueba | Resultado esperado | Resultado observado o propuesta | Responsable | Riesgo pendiente |
|---|---|---|---|---|---|---|---|---|
| Consulta de reservas de G-A desde G-B | Aislar grupos | U-03, R-A | Pertenencia y propiedad en API | P-02 | Denegar sin datos | Propuesta; sin ejecutar | Equipo API ficticio | Defectos en rutas alternativas |
| Completar | | | | | | | | |

## Casos de verificación

Los siguientes resultados son esperados, no ejecutados. Completa la última columna solo con evidencia real de un entorno de práctica; de lo contrario conserva “propuesta”.

| ID | Escenario | Resultado esperado | Control | Observación / evidencia |
|---|---|---|---|---|
| P-01 | U-01 consulta su reserva R-A | Permitir con identidad vigente y respuesta mínima. | Identidad, pertenencia y propiedad | Propuesta |
| P-02 | U-03 intenta consultar R-A desde G-B | Denegar sin datos de R-A. | Aislamiento por grupo y recurso | Propuesta |
| P-03 | Un listado o exportación de G-B contiene datos de G-A | Excluir datos ajenos en servidor. | Ámbito en todas las consultas | Propuesta |
| P-04 | La API recibe un ID token o un token con audiencia incorrecta | Rechazar antes de acceder a reservas. | Contrato del access token | Propuesta |
| P-05 | U-01 conserva una sesión después de retirarse su pertenencia | Denegar por estado vigente y aplicar la política de sesión. | Baja y revalidación de permisos | Propuesta |
| P-06 | La creación incluye approvedBy o groupId no autorizado | Rechazar campos protegidos; el servidor deriva los valores. | Contrato de entrada | Propuesta |
| P-07 | Dos solicitudes intentan confirmar la misma sala y horario | Confirmar como máximo una; la otra recibe conflicto. | Exclusividad atómica | Propuesta |
| P-08 | E-01 llega dos veces de forma concurrente | Un solo efecto y respuesta consistente al duplicado. | Idempotencia duradera | Propuesta |
| P-09 | Un evento está alterado o fuera de la ventana temporal | Rechazar sin modificar la reserva. | Autenticidad y frescura | Propuesta |
| P-10 | Se repite eventId con contenido diferente | Rechazar el conflicto de contenido. | Clave y huella del mensaje | Propuesta |
| P-11 | U-01 aprueba su reserva de 30 asistentes | Denegar aunque posea un rol de coordinación. | Separación de personas | Propuesta |
| P-12 | U-02 aprueba versión 3 cuando ya existe versión 4 | Devolver conflicto y solicitar nueva revisión. | Aprobación vinculada a versión | Propuesta |
| P-13 | La operación crítica no puede persistir auditoría duradera | No dar por completada la aprobación; recuperar de forma controlada. | Ejecución y evidencia coordinadas | Propuesta |
| P-14 | U-02 aprueba versión 3 vigente con todos los controles satisfechos | Confirmar y registrar sujeto, grupo, reserva, versión y resultado. | Camino positivo completo | Propuesta |

## Solución orientativa

### Identidades y sesión

U-01 solicita en G-A; U-02 coordina G-A; U-03 pertenece a G-B. S-AVISO notifica sin aprobar. La API exige acceso dirigido a ella y comprueba pertenencia vigente.

### Permisos y aislamiento

Denegar a U-03 la lectura de R-A y a S-AVISO cualquier aprobación. Aplicar el mismo aislamiento a listados, exportaciones y tareas en segundo plano.

### Contrato de API

El servidor deriva grupo, creador y estado. Confirma exclusividad de sala y horario al escribir. Una colisión devuelve conflicto sin exponer la reserva ajena.

### Eventos confiables

Validar productor, mensaje y tiempo. Registrar productor más eventId y huella de forma duradera, coordinada con el efecto. Confirmar entrega no autoriza la reserva.

### Aprobación y auditoría

Regla del ejercicio: la aprobación necesita conservar de forma duradera su evidencia de negocio. Si esa persistencia falla, la aprobación queda sin completar y debe recuperarse de forma controlada. Esto no significa detener toda la aplicación por una caída del sistema externo de logs o de monitoreo. La evidencia de aprobación puede persistirse localmente y enviarse después al sistema de observabilidad. La decisión sobre este comportamiento corresponde al diseño ficticio del ejercicio.

U-02 aprueba la versión 3 vigente tras la autenticación reforzada requerida. Si cambió a versión 4, devolver conflicto. La autoaprobación de U-01 se deniega.

### Trazabilidad y revisión

Cada fila identifica responsable, resultado esperado, resultado observado si existe y riesgo pendiente. Ninguna prueba documental se presenta como una ejecución real.

## Cierre sin calificación

- ¿Se distinguen identidad, permiso y recurso?
- ¿Los rechazos tienen el mismo rigor que el camino positivo?
- ¿Una edición concurrente invalida la aprobación anterior?
- ¿Un evento duplicado produce como máximo un efecto coherente?
- ¿La auditoría permite reconstruir la decisión sin almacenar secretos?
- ¿Se separan resultados esperados y observados?

## Referencias

- [OWASP ASVS 5.0.0](https://owasp.org/www-project-application-security-verification-standard/)
- [IETF RFC 9700](https://www.rfc-editor.org/rfc/rfc9700.html)
- [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html)
- [OWASP Authorization](https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html)
- [IETF RFC 9421](https://www.rfc-editor.org/rfc/rfc9421.html)
- [OWASP Logging](https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html)

## Procedencia y reutilización

Material elaborado para el proyecto personal de Andrez Higuera con apoyo de ChatGPT. Contiene información neutral y escenarios ficticios con fines educativos. Responsable editorial: Andrez Higuera. La mención de estándares y organizaciones en las referencias no implica afiliación, patrocinio ni certificación.

**Recurso:** ACA-REC-20 · **Versión editorial:** 1.0 · **Revisión:** 27 de septiembre de 2026.

Los textos educativos, ejercicios, plantillas y soluciones propios de este recurso se ofrecen bajo Creative Commons Atribución-NoComercial 4.0 Internacional (CC BY-NC 4.0). Al compartirlos o adaptarlos, conserve la atribución y los avisos aplicables, incluya el enlace al original y a la licencia, e indique los cambios. Los componentes de terceros identificados por separado conservan sus condiciones. Esta licencia no concede derechos sobre marcas ni implica respaldo institucional.

[Original](https://briefing.andrezhiguera.cl/academia/recursos/libro-trabajo-ruta-03.md) · [Licencia CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/) · [Alcance y condiciones](https://briefing.andrezhiguera.cl/academia/condiciones-de-uso).
