Autenticación de la plataforma
Flowker delega la autenticación de la plataforma en Access Manager, que se habilita con
PLUGIN_AUTH_ENABLED. Cuando está habilitado, cada solicitud a una ruta protegida de la API debe llevar un token Bearer (JWT de OIDC), y cada ruta protegida aplica un permiso por recurso y por acción. Así funciona la autorización basada en roles y en políticas.
Habilita Access Manager en producción.
- Access Manager habilitado: cada solicitud a una ruta protegida de la API lleva un token Bearer, y cada ruta protegida aplica un permiso por recurso y por acción.
- Access Manager deshabilitado: los endpoints no requieren autenticación. Cuando hay un token Bearer presente, Flowker igual lee la identidad de él en la medida de lo posible. Flowker atribuye la solicitud al sujeto declarado. Usa este modo solo para desarrollo local.
- Las credenciales inválidas o ausentes devuelven
401 Unauthorized.
Autenticación del proveedor
Cuando Flowker llama a un servicio externo, se autentica con las credenciales de la configuración de proveedor a través de la cual llama el nodo. Tus credenciales de plataforma y tus credenciales de proveedor permanecen separadas. Tipos de autenticación admitidos:
El bloque
config.auth de la configuración de proveedor contiene la autenticación que requiere el servicio externo, como un par { type, config }. Flowker la aplica a cada llamada que un nodo hace a través de esa conexión.
Flowker envía las hojas secretas de config.auth (una API key, un token bearer, una contraseña, un client secret o un secreto HMAC) al backend de secretos. Luego las quita de la configuración persistida. Con la lectura de secretos configurada, una lectura autorizada de la configuración de proveedor puede resolverlas para mostrarlas. Restringe ese permiso y trata su respuesta como sensible.
Cualquier otra cosa que coloques en el documento de configuración (un header, por ejemplo) permanece con la configuración, y una lectura puede devolverla. Coloca cada credencial en config.auth.
Para rotar un secreto, envía el nuevo valor en una actualización. Para conservar el actual, omite el campo o envíalo vacío. Esto funciona mientras auth.type siga siendo el mismo. Una actualización que cambia auth.type debe llevar un valor para cada secreto que el nuevo tipo requiere y el anterior no. De lo contrario, Flowker la rechaza con FLK-0952. Un cambio entre dos tipos que usan el mismo secreto, como de oidc_user a oidc_client_credentials, no necesita ese valor de nuevo.
Para los flujos de OIDC (
oidc_client_credentials y oidc_user), Flowker gestiona la obtención y la renovación del token automáticamente. Para oidc_client_credentials, proporciona la URL del issuer, el client ID y el client secret. Para oidc_user, proporciona la URL del issuer, el client ID, el nombre de usuario y la contraseña. client_secret es opcional para clientes públicos.Seguridad de red
TLS:
- Configura la terminación TLS para el tráfico de la API de Flowker en tu despliegue.
- Usa URLs base
https://para las llamadas externas. Flowker acepta una URI para elbase_urldel proveedor HTTP genérico. No lo restringe a HTTPS. - Transmite credenciales y payloads sensibles solo por enlaces cifrados.
- Los orígenes permitidos se configuran por despliegue
- Las solicitudes de origen cruzado no pueden llevar credenciales (
AllowCredentialspermanece desactivado) - Flowker cachea las respuestas de preflight por rendimiento
Resiliencia
Flowker protege contra las fallas en cascada de los servicios externos con patrones de circuit breaker y de reintento. Circuit breaker: Cuando un servicio externo falla de forma repetida, el circuit breaker se abre y deja de enviar solicitudes. Esto evita que tus workflows se queden colgados esperando a un proveedor que no responde.
- Transita por los estados
closed→open→half-open - Cada circuito aplica a una configuración de proveedor y a un tenant, así que las fallas contra una conexión no afectan a otra
- Configuras los umbrales de forma global (fallas consecutivas antes de abrir)
- El estado half-open permite un número limitado de solicitudes de prueba antes de cerrarse por completo
- Activación en el nodo. Un
retry.max_attemptsmayor que1activa los reintentos sea cual sea el método. El valor es la cantidad total de intentos, y la plataforma lo limita a 5. Unretry.max_attemptsde1no es una activación. Establece un solo intento. - Método HTTP. Sin activación, Flowker trata
POSTyPATCHcomo no idempotentes y les da un solo intento. Todos los demás verbos reintentan, con 3 intentos totales de forma predeterminada. Esto incluyeGET,HEAD,OPTIONS,PUTyDELETE. - Clase de falla. El presupuesto se gasta solo en una falla transitoria: un error de red, un timeout en el intento, cualquier estado
5xx, o el estado408o429. Todos los demás4xxfallan en el primer intento por alto que sea el presupuesto. Un circuito abierto y una ejecución cancelada también detienen el bucle. Un cuerpo de solicitud que supera el límite de tamaño configurado y un cuerpo de respuesta que supera ese mismo límite también lo detienen.
retry.backoff_seconds establece el primer techo, entre 1 y 60. La espera aleatoria evita que muchas ejecuciones reintenten contra el mismo servicio en el mismo momento.
Qué sigue
Guía de integración
Aprende a crear configuraciones de proveedor y a conectar servicios externos.
Observabilidad
Monitorea Flowker con trazas, métricas y logs estructurados.

