Keycloak en Producción · Lección 22
¿Qué consideración especial de seguridad es importante al integrar una Single Page Application (SPA) que corre en el navegador con Keycloak, dado que el código de esa aplicación es visible para el usuario final?
La SPA debe configurarse como un Client público (sin client secret) usando el flujo Authorization Code con PKCE (una extensión de seguridad adicional), ya que no puede mantener protegido ningún secreto de forma segura al estar su código completamente expuesto en el navegador del usuario
Una SPA siempre debe configurarse exactamente igual que un backend tradicional, como un Client confidential con un client secret embebido directamente en su código
Solo es relevante esta consideración de seguridad si la SPA tiene exactamente un único usuario en total interactuando con ella
PKCE es una extensión completamente irrelevante para la seguridad del flujo de autenticación en una aplicación SPA, sin ninguna relación real con ese contexto específico
Keycloak en Producción · Lección 22
Completa el código
La SPA debe configurarse como un Client público usando el flujo Authorization Code con
Revisa: debe usar el flujo Authorization Code con PKCE como extensión de seguridad adicional.
Keycloak en Producción · Lección 22
¿Por qué PKCE añade una capa de seguridad adicional específicamente útil para un Client público como una SPA, que no puede confiar en mantener un secreto protegido de la forma en que lo haría un backend confidential?
Pista: en vez de depender de un secreto fijo y permanente (que una SPA no puede proteger), PKCE genera dinámicamente un valor temporal único para cada intento específico de autenticación, verificando que quien complete el flujo sea la misma parte que lo inició originalmente; ese mecanismo compensa la ausencia de un secreto fijo tradicional con una protección específica y temporal para cada sesión de autenticación individual, dificultando que un atacante pueda interceptar y reutilizar exitosamente ese flujo.
✓
¡Lección completada!
Integración con aplicaciones frontend (SPA)
0
XP ganado
3
Vidas restantes