🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesióngRPC: autenticación, metadatos y reflexión
5 tareas · 40 min · Principiante
Muchos servicios internos no hablan HTTP con JSON sino gRPC: contratos definidos en archivos proto, llamadas que parecen funciones locales y credenciales que viajan en metadatos. Los errores de autorización son los de siempre, pero se esconden en otro sitio, en el interceptor que decide quién pasa. En Domicilios Cuchumbí un repartidor reasignó pedidos sin ser coordinador y la liquidación de los repartidores apareció donde no debía. Tienes la definición del servicio de flota, su servidor, su interceptor y el registro de producción.
Objetivo de la sala
Muchos servicios internos no hablan HTTP con JSON sino gRPC: contratos definidos en archivos proto, llamadas que parecen funciones locales y credenciales que viajan en metadatos. Los errores de autorización son los de siempre, pero se esconden en otro sitio, en el interceptor que decide quién pasa. En Domicilios Cuchumbí un repartidor reasignó pedidos sin ser coordinador y la liquidación de los repartidores apareció donde no debía. Tienes la definición del servicio de flota, su servidor, su interceptor y el registro de producción.En gRPC cada llamada lleva, además del mensaje, unos metadatos: pares de clave y valor que viajan como cabeceras de la petición. Ahí va la credencial, normalmente en la clave authorization, y ahí puede ir cualquier otra cosa que el cliente quiera mandar. El protocolo reserva para su propio uso las claves que empiezan por grpc- y marca las binarias con el sufijo -bin; el resto lo eligen las aplicaciones.
La consecuencia es la misma que con las cabeceras HTTP: todo metadato lo escribe quien llama. Una credencial firmada se puede validar; un metadato que dice «soy coordinador» es solo una afirmación del cliente, y decidir con él equivale a preguntarle al usuario qué permisos quiere tener.
Responde para continuar
Un servicio gRPC lee el rol del usuario de un metadato que manda la aplicación cliente. ¿Qué vale ese dato para autorizar?
Ver pista de ayuda
Cifrado en tránsito no quiere decir escrito por alguien de confianza.
Abre el laboratorio y lee interceptor.go. Un interceptor de autenticación es una función que corre antes de cada método y decide si la llamada sigue. Casi todos tienen una lista de métodos que no piden credencial, y la comprobación de salud suele ser el único que debería estar ahí. Mira qué más hay en esa lista y crúzalo con lo que devuelve según flota.proto.
Responde para continuar
Además de la comprobación de salud, ¿qué método de Flota no pide credencial? Escribe solo el nombre del método.
Ver pista de ayuda
Busca el mapa de métodos exentos.
ReasignarPedido solo deja pasar a coordinadores, y en el registro un usuario que es repartidor lo usó con éxito. El método comprueba el rol; la pregunta es de dónde sale ese rol. Lee cómo lo carga el interceptor y mira las dos llamadas de u-70315 a ese método.
Responde para continuar
¿De qué metadato toma el interceptor el rol con el que se autoriza la llamada? Escribe su clave tal como aparece en el código.
Ver pista de ayuda
El token del usuario no trae rol.
gRPC distingue dos clases de llamada: las unarias, un pedido y una respuesta, y las de flujo, donde uno de los lados o los dos mandan una secuencia de mensajes. Los interceptores también se registran por clase, y uno de llamadas unarias no corre en las de flujo. La reflexión del servidor, que permite a un cliente preguntarle qué servicios y mensajes ofrece, es justamente un método de flujo. La documentación oficial de gRPC advierte que en un servicio público puede convenir no exponerla, y aquí se registró con un comentario de quitarla antes de producción. Lee servidor.go y busca en el registro qué pasó sin credencial.
Responde para continuar
Además del método exento, ¿qué método de Flota respondió OK a una llamada sin credencial? Escribe solo el nombre del método.
Ver pista de ayuda
Mira qué método de flota.proto devuelve una secuencia de mensajes.
Ya tienes cuatro hallazgos en un solo servicio: un método sensible exento, un rol escrito por el cliente, un interceptor que solo cubre una clase de llamada y la reflexión encendida en producción. De paso, el interceptor responde «permiso denegado» a una llamada sin credencial cuando la guía de códigos de estado de gRPC reserva ese código para quien sí se identificó; para quien no lo hizo existe el de no autenticado. Eso no abre nada, pero confunde a quien lee los registros.
Responde para continuar
¿Qué conjunto de cambios corrige los hallazgos del servicio de flota sin dejar ninguno abierto?
Ver pista de ayuda
Cada hallazgo tiene su propio arreglo; ninguno se tapa con otro.
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.