Saltar al contenido

Lección 5 de 12 · Lectura y práctica

Apollo Server, contexto y autenticacion

Respuesta rapida: Apollo Server permite exponer un endpoint GraphQL con schema, resolvers y contexto compartido por request. El contexto es donde viajan usuario, permisos, trazas y clientes de datos. Que vas a aprender Apollo.

Del concepto a la práctica

Taller de esta lección

El contexto por petición permite transportar identidad y dependencias sin repetir el análisis del token en cada resolver. Autenticación y autorización siguen siendo decisiones distintas.

Ejemplo resuelto

Una petición trae un token válido para user-42, con rol student. El contexto queda { userId: "user-42", roles: ["student"] }. course público continúa disponible; progress exige que el usuario esté inscrito en ese curso.

Para Apollo Server 5 y Express 5 importa la integración independiente y espera el arranque antes de montarla:

js
import { ApolloServer } from '@apollo/server';
import { expressMiddleware } from '@as-integrations/express5';
import express from 'express';
const app = express();
const server = new ApolloServer({
  typeDefs: 'type Query { hello: String! }',
  resolvers: { Query: { hello: () => 'Hola' } },
});
await server.start();
app.use('/graphql', express.json(), expressMiddleware(server, {
  context: async () => ({ userId: null }),
}));
app.listen(4000);

Este ejemplo ESM es una ruta pública de aula sin autenticación. Si añades un token, valida firma, expiración y datos esperados antes de formar el contexto; copiar un header o decodificarlo no autentica. Configura CORS y cierre ordenado al ampliar la integración, según la guía oficial.

Pruébalo

  1. Separa datos de identidad de permisos del recurso.

  2. Define el contexto para una petición sin token.

  3. Decide qué operación puede leer un visitante.

  4. Registra solo un identificador de correlación, nunca el token.

Error frecuente: tratar un rol como permiso universal. Corrige combinando rol, propiedad del recurso y estado de inscripción.

Comprueba tu resultado

Prepara tres casos: visitante, estudiante inscrito y estudiante no inscrito. El resultado es verificable si cada caso tiene acceso explícito a course y una decisión distinta para progress cuando corresponde.

Capas de acceso, actualización, copias y respuesta a incidentes alrededor de un sistema.
CursaloMapa de práctica
La seguridad necesita varias capas

El control de acceso, las actualizaciones y las copias de seguridad cubren riesgos distintos. Una alerta necesita un procedimiento de respuesta para contener y recuperar el servicio. Varias capas reducen la exposición, pero ninguna garantiza seguridad absoluta.

Ver la infografía en tamaño completo ↗
Fuentes para profundizar
Respuesta rapida: Apollo Server permite exponer un endpoint GraphQL con schema, resolvers y contexto compartido por request. El contexto es donde viajan usuario, permisos, trazas y clientes de datos.

Que vas a aprender

Apollo Server permite exponer un endpoint GraphQL con schema, resolvers y contexto compartido por request. El contexto es donde viajan usuario, permisos, trazas y clientes de datos.

Paso 1: practica profesional

La autenticacion no deberia vivir en cada query como codigo repetido. Valida el token al crear contexto, guarda userId y roles, y luego aplica reglas de autorizacion en servicios o helpers de dominio.

Paso 2: practica profesional

Para una plataforma educativa, un usuario puede leer cursos publicos, pero solo acceder a progreso, certificados o lecciones privadas si esta inscripto. Esa regla debe ser explicita y testeable.

Paso 3: practica profesional

En entrevistas, muestra que entendes seguridad: autenticacion prueba identidad; autorizacion decide que puede hacer esa identidad; auditoria registra acciones relevantes.

Ejercicio practico para portfolio

Elegi una API de cursos, empleos o productos digitales y documenta como resolverias este problema con GraphQL y Apollo. Inclui el schema, una query, una mutation, manejo de errores y una nota sobre cache o permisos. El objetivo no es memorizar sintaxis: es demostrar criterio tecnico para una entrevista junior, freelance o equipo de producto.

  • Entregable: captura del resultado, archivo con codigo y README breve.
  • Checklist: nombres claros, datos tipados, errores explicitos y flujo reproducible.
  • Conexion laboral: agregalo a tu portfolio y enlazalo desde LinkedIn o desde una propuesta del marketplace.

Cuando termines, continua con rutas de carreras, oportunidades de empleo digital y servicios publicados en el marketplace de Cursalo.

Sigue con GraphQL con Apollo para APIs modernas

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.