Autenticação da plataforma
O Flowker delega a autenticação da plataforma ao Access Manager, habilitado com
PLUGIN_AUTH_ENABLED. Quando habilitado, cada requisição a uma rota de API protegida deve carregar um Bearer token (JWT OIDC) e cada rota protegida aplica uma permissão por recurso e por ação — é assim que a autorização baseada em roles e em políticas é aplicada.
Habilite o Access Manager em produção.
- Access Manager habilitado — cada requisição a uma rota de API protegida carrega um Bearer token e cada rota protegida aplica uma permissão por recurso e por ação.
- Access Manager desabilitado — os endpoints não exigem autenticação. A identidade de um Bearer token, quando presente, ainda é lida em regime de melhor esforço, de modo que a requisição é atribuída ao sujeito declarado. Use este modo apenas para desenvolvimento local.
- Credenciais inválidas ou ausentes retornam
401 Unauthorized.
Autenticação de providers
Quando o Flowker chama um serviço externo, ele se autentica com as credenciais da configuração de provider pela qual o node chama. Suas credenciais de plataforma e suas credenciais de provider são gerenciadas separadamente. Tipos de autenticação suportados:
O bloco
config.auth da configuração de provider contém a autenticação que o serviço externo exige, como um par { type, config }. O Flowker a aplica em cada chamada que um node faz por essa conexão.
Os campos secretos de config.auth — uma API key, um token bearer, uma senha, um client secret ou um segredo HMAC — são enviados ao backend de segredos e removidos da configuração persistida. Quando a leitura de segredos está configurada, uma leitura autorizada da configuração de provider pode resolvê-los para exibição. Restrinja essa permissão e trate a resposta como sensível.
Qualquer outra coisa que você colocar no documento de configuração — um header, por exemplo — é armazenada junto com a configuração, e uma leitura pode devolvê-la. Coloque cada credencial em config.auth.
Para rotacionar um segredo, envie o novo valor em uma atualização. Para manter o atual, omita o campo ou envie-o em branco: isso funciona enquanto auth.type não mudar. Uma atualização que muda auth.type deve levar um valor para cada segredo que o novo tipo exige e o anterior não exigia; caso contrário, o Flowker a rejeita com FLK-0952. Uma mudança entre dois tipos que usam o mesmo segredo, como de oidc_user para oidc_client_credentials, não precisa desse valor novamente.
Para os fluxos OIDC (
oidc_client_credentials e oidc_user), o Flowker gerencia a aquisição e renovação de tokens automaticamente. Para oidc_client_credentials, forneça a URL do emissor, o client ID e o client secret. Para oidc_user, forneça a URL do emissor, o client ID, o nome de usuário e a senha; o client_secret é opcional para clientes públicos.Segurança de rede
TLS:
- Configure a terminação TLS para o tráfego da API do Flowker na sua implantação.
- Use URLs base
https://para chamadas externas. O Flowker aceita uma URI para obase_urldo provider HTTP genérico; não o restringe a HTTPS. - Transmita credenciais e payloads sensíveis apenas por links criptografados.
- As origens permitidas são configuráveis por implantação
- Credenciais não são permitidas em requisições cross-origin (
AllowCredentialsestá desabilitado) - Respostas de preflight são cacheadas para performance
Resiliência
O Flowker protege contra falhas em cascata de serviços externos usando padrões de circuit breaker e retentativas. Circuit breaker: Quando um serviço externo falha repetidamente, o circuit breaker abre e para de enviar requisições — evitando que seus workflows fiquem travados em um serviço que não responde.
- Transita pelos estados
closed→open→half-open - O circuito tem escopo por configuração de provider e por tenant, portanto falhas contra uma conexão não afetam outra
- Os limiares são configurados globalmente (falhas consecutivas antes de abrir)
- O estado half-open permite um número limitado de requisições de teste antes de fechar completamente
- Inscrição do node. Um
retry.max_attemptsmaior que1liga as retentativas independentemente do método. O valor é a quantidade total de tentativas, e a plataforma o limita a 5. Umretry.max_attemptsigual a1não é uma inscrição: fixa uma única tentativa. - Método HTTP. Sem inscrição,
POSTePATCHsão tratados como não idempotentes e recebem uma única tentativa.GET,HEAD,OPTIONS,PUT,DELETEe qualquer outro verbo são retentados, com 3 tentativas totais por padrão. - Classe da falha. O orçamento só é gasto em uma falha transitória: um erro de rede, um timeout na tentativa, qualquer status
5xx, ou o status408ou429. Qualquer outro4xxfalha na primeira tentativa por mais alto que seja o orçamento. Um circuito aberto, uma execução cancelada, um corpo de requisição acima do limite de tamanho configurado e um corpo de resposta acima do mesmo limite também interrompem o laço.
retry.backoff_seconds define o primeiro teto, entre 1 e 60. A espera aleatória impede que muitas execuções retentem o mesmo serviço no mesmo momento.
Próximos passos
Guia de integração
Aprenda como criar configurações de provider e conectar serviços externos.
Observabilidade
Monitore o Flowker com traces, métricas e logs estruturados.

