PTENES
MÓDULO 1.3

🛂 Cross-origin y permisos

Modela el origen, la identidad, el consentimiento y los límites entre la página, el agente, el backend y los servicios externos.

6

Temas

3h

Carga

Agent Developer

Nivel

Seguridad

Tipo

0 de 60%
1

Identifica quién habla en nombre de quién

Qué es: La página, el agente, el usuario y el backend tienen identidades y autoridades diferentes.

Por qué aprender: Confundir estas identidades crea delegación excesiva y errores de autorización.

Origen de la página estado inicial Límite de permisos decisión observable Servicio autorizado resultado verificable

Antes de modelar

Escribe la solicitud de la persona, el estado actual y la evidencia que probará que se completó.

Error de inicio

Empezar por el nombre de una función o por un botón produce una herramienta sin un objetivo humano claro.

Anticípate antes de abrir el código

¿Qué información cambia la decisión? ¿Qué efecto debe aparecer en la interfaz? Responde antes de implementar.

actor: userSession.id
agent: browserAgent.instanceId
origin: location.origin
resource: "enrollments"
Profundiza: evidencia que vale la pena guardar

Registra la entrada, el estado anterior, la decisión tomada, el resultado y el cambio visible en la página.

Incluye también un fallo provocado y el comportamiento observado sin soporte WebMCP.

Conceptos clave

01

principal

02

delegación

03

sesión

04

recurso

2

Usa la política del mismo origen

Qué es: El origen combina esquema, host y puerto, y define un límite central de la Web.

Por qué aprender: Una tool registrada en un documento no concede acceso libre a otros orígenes.

PreguntaContrato sólidoContrato débil
¿Cuándo usarlo?La descripción nombra la intención y el contexto.“Hace cosas” o “administra”.
¿Qué recibe?Solo los datos necesarios.Objeto genérico e ilimitado.
¿Qué devuelve?Estado y próxima acción verificables.Texto sin protocolo.
¿Cómo falla?Código, motivo y recuperación.Excepción opaca.

Hazlo

  • ✓ Usa verbos específicos.
  • ✓ Delimita las entradas.
  • ✓ Declara la evidencia.

Evita

  • ✗ Mezclar intenciones.
  • ✗ Aceptar cualquier objeto.
  • ✗ Ocultar efectos.
const lifecycle = new AbortController();

await document.modelContext.registerTool(tool, {
  exposedTo: ["https://agent.example"],
  signal: lifecycle.signal
});

// Same-origin é o padrão. Cross-origin exige origem explícita e confiável.

Tres controles diferentes

exposedTo selecciona los orígenes autorizados para descubrir la herramienta; la Permissions Policy tools controla la delegación en el documento; el backend aún autentica a la persona y autoriza cada efecto.

Profundiza: evidencia que vale la pena guardar

Registra la entrada, el estado anterior, la decisión tomada, el resultado y el cambio visible en la página.

Incluye también un fallo provocado y el comportamiento observado sin soporte WebMCP.

Conceptos clave

01

mismo origen

02

esquema

03

host

04

puerto

3

Trata el iframe como una frontera

Qué es: Los frames incorporados tienen su propio documento, origen y ciclo de vida.

Por qué aprender: El agente necesita saber qué contexto ofrece la herramienta y dónde será visible el efecto.

1

Observa

Captura el estado, la entrada y el contexto antes de la acción.

2

Decide

Valida las precondiciones y elige la transición permitida.

3

Ejecuta

Aplica la regla compartida y respeta la cancelación.

4

Demuestra

Actualiza la interfaz y devuelve un resultado estructurado.

Punto de control

Si la etapa 2 falla, la tool no intenta «arreglarlo»: devuelve una recuperación explícita.

const tools = await document.modelContext.getTools({
  fromOrigins: ["https://agent.example"]
});
const selected = tools.find((tool) => tool.name === "buscar_cursos");

// RegisteredTool preserva origem e Window do contexto registrador.
assertTrusted(selected.origin);
runOnlyWhileConnected(selected.window);
Profundiza: evidencia que vale la pena guardar

Registra la entrada, el estado anterior, la decisión tomada, el resultado y el cambio visible en la página.

Incluye también un fallo provocado y el comportamiento observado sin soporte WebMCP.

Conceptos clave

01

frame superior

02

iframe

03

sandbox

04

context id

4

No conviertas CORS en autorización

Qué es: CORS controla la lectura por scripts en el navegador; el backend sigue validando la identidad y los permisos.

Por qué aprender: Una respuesta permitida por CORS puede seguir prohibida para ese usuario y esa operación.

CÓDIGO DE REFERENCIA

fetch(api, { credentials: "include", signal });
// servidor valida sessão, escopo e CSRF
Entrada

Es pequeña, descriptible y validable.

Ejecución

Reutiliza la regla real de la aplicación.

Salida

Permite verificar el efecto y continuar.

Lee el código como contrato

Subraya dónde se valida la entrada, dónde ocurre el efecto, dónde llega la cancelación y dónde se actualiza la UI.

Profundiza: evidencia que vale la pena guardar

Registra la entrada, el estado anterior, la decisión tomada, el resultado y el cambio visible en la página.

Incluye también un fallo provocado y el comportamiento observado sin soporte WebMCP.

Conceptos clave

01

CORS

02

credentials

03

backend auth

04

CSRF

5

Pide un consentimiento proporcional

Qué es: Las acciones sensibles requieren una confirmación clara que muestre el objetivo, el efecto y la reversibilidad.

Por qué aprender: El consentimiento genérico o anticipado no cubre una mutación específica.

Fallo provocado

Ejecuta el escenario con estado ausente, entrada no válida o capacidad no disponible.

Recuperación esperada

La respuesta informa qué falló, qué sigue siendo seguro y qué acción puede continuar.

Matriz mínima de prueba

✓ camino feliz reproducible

✓ entrada inválida accionable

✓ la cancelación termina el trabajo

✓ el fallback preserva el recorrido

✓ la interfaz refleja el estado

✓ el backend mantiene la autorización

confirm({ action: "cancelar inscrição", target: enrollmentId, reversible: false });
Profundiza: evidencia que vale la pena guardar

Registra la entrada, el estado anterior, la decisión tomada, el resultado y el cambio visible en la página.

Incluye también un fallo provocado y el comportamiento observado sin soporte WebMCP.

Conceptos clave

01

justo a tiempo

02

efecto

03

objetivo

04

reversibilidad

6

Prueba ataques entre contextos

Qué es: La suite cubre tool spoofing, navegación durante la ejecución, frame eliminado y respuesta de un origen inesperado.

Por qué aprender: Los límites solo existen de verdad cuando se ponen a prueba las rutas adversariales.

Ejercicio de síntesis

  1. 1. Explica el problema sin usar el nombre de la tecnología.
  2. 2. Diseña el estado anterior y posterior.
  3. 3. Implementa la prueba funcional más pequeña.
  4. 4. Provoca un fallo y registra la recuperación.
  5. 5. Entrega código, evidencia y una limitación conocida.

Desafío del módulo

Diseñar una matriz de autoridad para un agente que navega entre un catálogo público, un área autenticada y un servicio externo.

Criterio de Agent Developer responsable

La entrega debe funcionar, explicar sus límites y preservar la vía humana cuando la capacidad experimental no exista.

esperado: rejeitar resultado quando responseOrigin !== registeredOrigin
Profundiza: evidencia que vale la pena guardar

Registra la entrada, el estado anterior, la decisión tomada, el resultado y el cambio visible en la página.

Incluye también un fallo provocado y el comportamiento observado sin soporte WebMCP.

Conceptos clave

01

spoofing

02

carrera de navegación

03

frame removal

04

verificación del origen

📦 Entrega del módulo

Diseñar una matriz de autoridad para un agente que navega entre un catálogo público, un área autenticada y un servicio externo.

Criterio de aceptación

La entrega funciona con soporte de WebMCP y mantiene la vía manual cuando la API no existe.

Evidencia

Incluye código, escenario probado, resultado observado y una limitación conocida.

Fuentes técnicas