74 lines
3.6 KiB
Markdown
74 lines
3.6 KiB
Markdown
# Autenticación de la POC sin Keycloak
|
|
|
|
El perfil explícito `demo-token` usa un token fijo en `Authorization: Bearer ...`.
|
|
No necesita un JWT, issuer, audiencia ni JWKS de Keycloak. El resto de las rutas
|
|
sigue protegido; sin token o con un valor incorrecto responde 401.
|
|
|
|
El override `compose.mock.yaml` activa `postgres96,demo-mock,demo-token` por defecto.
|
|
Para usarlo basta el `MOCK_ADMIN_TOKEN` existente (al menos 32 caracteres base64url:
|
|
letras, números, guion o guion bajo). Compose lo reutiliza como token del
|
|
orquestador si no defines `ORCHESTRATOR_DEMO_TOKEN`.
|
|
|
|
Opcionalmente, separar tokens en `.env`:
|
|
|
|
```dotenv
|
|
# Sustituir por un token aleatorio de 32 a 256 caracteres base64url.
|
|
ORCHESTRATOR_DEMO_TOKEN=
|
|
ORCHESTRATOR_DEMO_SUBJECT=poc-user
|
|
ORCHESTRATOR_DEMO_SCOPE=demo
|
|
ADMIN_BUSINESS_SCOPES=demo
|
|
```
|
|
|
|
Un valor vacío de ORCHESTRATOR_DEMO_TOKEN en Compose usa MOCK_ADMIN_TOKEN. Al
|
|
arrancar directamente con Java y demo-token, ORCHESTRATOR_DEMO_TOKEN es obligatorio.
|
|
No guardar tokens reales en el repositorio ni en las colecciones exportadas.
|
|
|
|
Aplicar la configuración y reconstruir el servicio:
|
|
|
|
```bash
|
|
docker compose -f compose.yaml -f compose.mock.yaml up -d --build orquestador
|
|
docker compose -f compose.yaml -f compose.mock.yaml exec orquestador printenv SPRING_PROFILES_ACTIVE
|
|
```
|
|
|
|
En la colección Postman **Orquestador NMP**, establecer `accessToken` con ese
|
|
token fijo, sin escribir Bearer. Dejar vacíos `editorToken`, `publisherToken`,
|
|
`adminToken` y `operatorToken` para que reutilicen accessToken. Borrar valores
|
|
antiguos de esos campos y de variables de entorno de Postman que los sobrescriban.
|
|
La colección del mock mantiene `mockAdminToken=MOCK_ADMIN_TOKEN`.
|
|
|
|
## Identidad y permisos
|
|
|
|
El servidor asocia el token a `poc-user`, ámbito `demo`, y roles ANALISTA,
|
|
FLOW_EDITOR, FLOW_PUBLISHER, FLOW_ADMIN y EXECUTION_OPERATOR. Subject y ámbito
|
|
se pueden configurar con las variables indicadas; roles fijos para la demo.
|
|
El cliente no puede escoger identidad/roles mediante el cuerpo o cabeceras.
|
|
|
|
Todas las personas que usen el mismo token son el mismo usuario de POC. Las
|
|
solicitudes creadas con otro subject o ámbito (incluido el usuario previo de
|
|
Keycloak) no se vuelven accesibles automáticamente. Cambiar el token conservando
|
|
subject y ámbito permite seguir trabajando con las solicitudes de la POC.
|
|
|
|
Se conservan las comprobaciones de propiedad, ámbito, roles, If-Match,
|
|
idempotencia y el rol restringido de PostgreSQL. La administración exige que
|
|
ADMIN_BUSINESS_SCOPES incluya el ámbito configurado. Un valor previo en `.env`
|
|
no se reemplaza automáticamente por demo.
|
|
|
|
FLOW_ADMIN_ENABLED, REQUEST_API_ENABLED y WORKER_ENABLED siguen siendo
|
|
interruptores independientes. Para el recorrido completo habilitarlos y usar
|
|
credenciales DB de runtime restringidas y migración separadas según SECURITY.md.
|
|
El token no crea tipos, flujos ni solicitudes y no evita esa comprobación DB.
|
|
|
|
## Modo normal
|
|
|
|
Sin `demo-token`, continúa la validación RS256, issuer, audiencia, expiración y
|
|
claims del JWT. JWT_ISSUER_URI, JWT_JWK_SET_URI y JWT_AUDIENCE son obligatorios
|
|
al arrancar la aplicación en modo normal, aunque Compose permita valores vacíos
|
|
para poder combinarlo con el override de POC. Configurar un token fijo sin
|
|
activar el perfil no habilita este modo.
|
|
|
|
Internamente se adapta la identidad a la representación usada por los
|
|
controladores existentes. No se firma un JWT ni se confía en claims proporcionados
|
|
por el cliente; únicamente se compara el secreto configurado. No hay caducidad
|
|
automática del token fijo: rotarlo requiere recrear el servicio. Esta POC usa
|
|
HTTP sin cifrado conforme a la configuración de demo solicitada.
|