Autenticación para desarrollo local
Esta guía cubre cómo funciona la autenticación en el entorno de desarrollo local, incluyendo la configuración de Keycloak y los procedimientos de inicio de sesión.
Configuración de Keycloak
Keycloak se ejecuta en http://localhost:8081 y se configura automáticamente con importaciones de realm cuando ejecutas make start-deps.
Consola de administración de Keycloak
- URL: http://localhost:8081
- Nombre de usuario:
admin - Contraseña:
admin
Realms
| Realm | Propósito | Usado por |
|---|---|---|
internal | Usuarios administrativos | Panel de administración |
customer | Clientes del banco | Portal del cliente |
Las definiciones de realm se almacenan en dev/keycloak/ y se importan automáticamente al iniciar.
Inicio de sesión en el panel de administración
- Navega a http://admin.localhost:4455
- Serás redirigido a Keycloak
- Inicia sesión con: admin@galoy.io
- El panel de administración usa el realm
internalde Keycloak con OIDC Code Flow
Inicio de sesión en el portal del cliente
- Primero, crea un cliente a través del panel de administración
- Abre http://app.localhost:4455 en un navegador separado o ventana de incógnito
- Introduce la dirección de correo electrónico del cliente
- Recupera el código de inicio de sesión:
make get-customer-login-code EMAIL=customer@example.com
- Introduce el código para completar el inicio de sesión
El portal del cliente usa NextAuth con el proveedor de Keycloak para autenticación OIDC.
Flujo de autenticación
Cómo funciona Oathkeeper
Oathkeeper se encuentra en el puerto 4455 y gestiona toda la autenticación:
- Recibe solicitudes entrantes con tokens JWT Bearer
- Valida la firma JWT contra el endpoint JWKS de Keycloak
- Emite un JWT interno con audiencia específica de ruta y sujeto de usuario
- Redirige la solicitud al servicio upstream apropiado (admin-server o customer-server)
Los servidores backend solo aceptan JWT internos de Oathkeeper — verifican usando el JWKS de Oathkeeper y comprueban la reclamación de audiencia.
Duración de los tokens (desarrollo)
| Token | Duración |
|---|---|
| Token de acceso | 5 minutos |
| Token de actualización | 30 minutos |
| Sesión | 8 horas |