El hito 08 autentica y protege a mano: lista de rutas en el filtro, comprobaciones sueltas. Este hito aplica el tema 07 — Integración con Spring Security: el flujo de autenticación no cambia; cambia quién construye y orquesta la maquinaria.
| Pieza | Cambio en este hito |
|---|---|
| Filtro | El filtro de JWT pasa a la cadena de filtros de Spring Security |
| Autorización | Reglas declarativas por rutas; por método donde toque |
| Contraseñas | El hashing delega en Spring Security (PasswordEncoder), sin tocar el dominio |
| Errores | 401 y 403 en el mismo formato Problem que el resto de la API |
Con la dependencia de Spring Security:
ADMIN, pedidos autenticados, registro y login públicos.
Que un pedido sea del comprador — o lo administre un ADMIN — no es un rol, es una regla de negocio del módulo de pedidos. La verificación declarativa por método de Spring Security la expresa como segunda verificación, con la Authentication que llega de la cadena; dónde colocarla exactamente lo decide cada quien. Al fallar, responde 403 — o 404, si se prefiere no delatar la existencia del pedido ajeno: la alternativa se discute en el tema y una de las dos, siempre coherente.
El hashing pasa a la maquinaria de Spring Security: el dominio del módulo users no cambia de abstracción; la implementación pasa a producir y comprobar con el PasswordEncoder. El formato del hash se mantiene — la semilla y los usuarios ya registrados siguen autenticando.
Los 401 y 403 de la cadena llegan con el mismo esquema Problem del contrato. Como los filtros, no pasan por los manejadores de la presentación: los prepara la propia configuración de la cadena — los componentes del tema 07.
Con MockMvc y el soporte de test de Spring Security:
USER en escritura de catálogos o productos → 403; token de ADMIN → 201.ADMIN gestiona catálogos y productos y un USER compra; los errores de seguridad llegan en formato Problem.ADMIN funcional y el registro crea siempre USER.hito-09.A partir de aquí: los temas de eventos, logs y Lambda reutilizan los ganchos previstos en la especificación.