Pular para o conteúdo principal

Autenticação e Acesso

Este documento detalha como configurar autenticação segura no n8n, abordando métodos de login, integração com LDAP/Active Directory, SSO empresarial, autenticação de dois fatores, controle de sessão, e políticas de segurança que protegem o acesso à plataforma garantindo que apenas usuários autorizados possam criar, modificar ou executar workflows sensíveis em ambiente corporativo.

O que você vai aprender

  • Métodos de autenticação disponíveis
  • Configuração de segurança avançada
  • Integração com sistemas externos
  • Autenticação de dois fatores
  • Controle de sessão e timeout

Métodos de Autenticação

Autenticação Básica

Configuração Básica

# <ion-icon name="shield-checkmark-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Variáveis de ambiente para autenticação básica
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=senha_segura_complexa

Docker Compose

services:
  n8n:
    image: n8nio/n8n:latest
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=${N8N_ADMIN_PASSWORD}
    ports:
      - "5678:5678"

Política de Senhas

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configurar política de senhas forte
N8N_PASSWORD_POLICY_MIN_LENGTH=12
N8N_PASSWORD_POLICY_REQUIRE_UPPERCASE=true
N8N_PASSWORD_POLICY_REQUIRE_LOWERCASE=true
N8N_PASSWORD_POLICY_REQUIRE_NUMBERS=true
N8N_PASSWORD_POLICY_REQUIRE_SPECIAL_CHARS=true

Autenticação de Dois Fatores (2FA)

Configuração 2FA

# <ion-icon name="document-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Ativar 2FA globalmente
N8N_2FA_ENABLED=true
N8N_2FA_REQUIRED=true

# <ion-icon name="key-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configurações de 2FA
N8N_2FA_ISSUER=n8n
N8N_2FA_ALGORITHM=SHA1
N8N_2FA_DIGITS=6
N8N_2FA_PERIOD=30

Apps Compatíveis

  • Google Authenticator - Mais popular
  • Microsoft Authenticator - Integração com Azure
  • Authy - Backup na nuvem
  • 1Password - Gerenciador de senhas
  • Bitwarden - Open source

Configuração por Usuário

// Ativar 2FA para usuário específico
{
  "userId": "user123",
  "twoFactorEnabled": true,
  "twoFactorSecret": "JBSWY3DPEHPK3PXP",
  "backupCodes": [
    "12345678",
    "87654321",
    "11223344"
  ]
}

SSO (Single Sign-On)

SAML 2.0

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configuração SAML
N8N_SAML_ENABLED=true
N8N_SAML_ISSUER=https://seu-identity-provider.com
N8N_SAML_ENTRY_POINT=https://seu-identity-provider.com/sso
N8N_SAML_CERT=/path/to/certificate.pem
N8N_SAML_PRIVATE_KEY=/path/to/private-key.pem
N8N_SAML_SIGNATURE_ALGORITHM=SHA256

OAuth 2.0

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configuração OAuth 2.0
N8N_OAUTH2_ENABLED=true
N8N_OAUTH2_CLIENT_ID=seu_client_id
N8N_OAUTH2_CLIENT_SECRET=seu_client_secret
N8N_OAUTH2_AUTH_URL=https://auth.provider.com/oauth/authorize
N8N_OAUTH2_TOKEN_URL=https://auth.provider.com/oauth/token
N8N_OAUTH2_USERINFO_URL=https://auth.provider.com/oauth/userinfo
N8N_OAUTH2_SCOPE=openid profile email

OpenID Connect

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configuração OpenID Connect
N8N_OIDC_ENABLED=true
N8N_OIDC_ISSUER=https://accounts.google.com
N8N_OIDC_CLIENT_ID=seu_client_id
N8N_OIDC_CLIENT_SECRET=seu_client_secret
N8N_OIDC_SCOPE=openid profile email

LDAP/Active Directory

Configuração LDAP

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configuração LDAP
N8N_LDAP_ENABLED=true
N8N_LDAP_SERVER_URL=ldap://ldap.empresa.com:389
N8N_LDAP_BIND_DN=cn=admin,dc=empresa,dc=com
N8N_LDAP_BIND_PASSWORD=senha_ldap
N8N_LDAP_BASE_DN=dc=empresa,dc=com
N8N_LDAP_USER_FILTER=(uid={{username}})
N8N_LDAP_USER_ATTRIBUTE=uid
N8N_LDAP_EMAIL_ATTRIBUTE=mail
N8N_LDAP_NAME_ATTRIBUTE=cn

Configuração Active Directory

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configuração Active Directory
N8N_LDAP_ENABLED=true
N8N_LDAP_SERVER_URL=ldap://dc.empresa.com:389
N8N_LDAP_BIND_DN=cn=admin,dc=empresa,dc=com
N8N_LDAP_BIND_PASSWORD=senha_ad
N8N_LDAP_BASE_DN=dc=empresa,dc=com
N8N_LDAP_USER_FILTER=(sAMAccountName={{username}})
N8N_LDAP_USER_ATTRIBUTE=sAMAccountName
N8N_LDAP_EMAIL_ATTRIBUTE=mail
N8N_LDAP_NAME_ATTRIBUTE=displayName
N8N_LDAP_GROUP_FILTER=(memberOf=cn=n8n-users,ou=groups,dc=empresa,dc=com)

Configurações de Segurança

Controle de Sessão

Timeout de Sessão

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configurar timeout de sessão
N8N_SESSION_TIMEOUT=3600  # 1 hora em segundos
N8N_SESSION_SECRET=chave_secreta_muito_longa_e_complexa
N8N_SESSION_COOKIE_SECURE=true
N8N_SESSION_COOKIE_HTTPONLY=true
N8N_SESSION_COOKIE_SAMESITE=strict

Limite de Tentativas de Login

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configurar limite de tentativas
N8N_MAX_LOGIN_ATTEMPTS=5
N8N_LOGIN_ATTEMPT_TIMEOUT=900  # 15 minutos
N8N_ACCOUNT_LOCKOUT_DURATION=1800  # 30 minutos

Configuração de Cookies

# <ion-icon name="shield-checkmark-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configurações de segurança de cookies
N8N_COOKIE_SECURE=true
N8N_COOKIE_HTTPONLY=true
N8N_COOKIE_SAMESITE=strict
N8N_COOKIE_DOMAIN=.seudominio.com
N8N_COOKIE_PATH=/

Restrições de IP

Whitelist de IPs

# <ion-icon name="document-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Permitir apenas IPs específicos
N8N_ALLOWED_IPS=192.168.1.0/24,10.0.0.0/8,203.0.113.0/24
N8N_BLOCKED_IPS=203.0.113.100,192.168.1.100

Configuração Nginx

# <ion-icon name="document-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Restrição por IP no Nginx
location / {
    allow 192.168.1.0/24;
    allow 10.0.0.0/8;
    deny all;
    
    proxy_pass http://n8n_backend;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

Horários de Acesso

Configuração de Janelas de Tempo

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configurar horários de acesso
N8N_ACCESS_HOURS_START=09:00
N8N_ACCESS_HOURS_END=18:00
N8N_ACCESS_TIMEZONE=America/Sao_Paulo
N8N_ACCESS_DAYS=monday,tuesday,wednesday,thursday,friday

Script de Verificação

#!/bin/bash
# <ion-icon name="document-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> check-access-hours.sh

CURRENT_TIME=$(date +%H:%M)
CURRENT_DAY=$(date +%A | tr '[:upper:]' '[:lower:]')
ALLOWED_START="09:00"
ALLOWED_END="18:00"
ALLOWED_DAYS="monday,tuesday,wednesday,thursday,friday"

# <ion-icon name="sparkles-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Verificar se é dia permitido
if [[ ! $ALLOWED_DAYS =~ $CURRENT_DAY ]]; then
    echo "Acesso negado: Fora dos dias permitidos"
    exit 1
fi

# <ion-icon name="time-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Verificar se está no horário permitido
if [[ "$CURRENT_TIME" < "$ALLOWED_START" || "$CURRENT_TIME" > "$ALLOWED_END" ]]; then
    echo "Acesso negado: Fora do horário permitido"
    exit 1
fi

echo "Acesso permitido"
exit 0

Integração com Sistemas Externos

Google Workspace

Configuração Google OAuth

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configuração para Google Workspace
N8N_OAUTH2_ENABLED=true
N8N_OAUTH2_CLIENT_ID=seu_google_client_id
N8N_OAUTH2_CLIENT_SECRET=seu_google_client_secret
N8N_OAUTH2_AUTH_URL=https://accounts.google.com/o/oauth2/auth
N8N_OAUTH2_TOKEN_URL=https://oauth2.googleapis.com/token
N8N_OAUTH2_USERINFO_URL=https://www.googleapis.com/oauth2/v2/userinfo
N8N_OAUTH2_SCOPE=openid profile email

Configuração Google SAML

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configuração SAML com Google
N8N_SAML_ENABLED=true
N8N_SAML_ISSUER=https://accounts.google.com/o/saml2?idpid=seu_idp_id
N8N_SAML_ENTRY_POINT=https://accounts.google.com/o/saml2/idp?idpid=seu_idp_id
N8N_SAML_CERT=/path/to/google_cert.pem

Microsoft Azure AD

Configuração Azure AD

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configuração Azure AD
N8N_OAUTH2_ENABLED=true
N8N_OAUTH2_CLIENT_ID=seu_azure_client_id
N8N_OAUTH2_CLIENT_SECRET=seu_azure_client_secret
N8N_OAUTH2_AUTH_URL=https://login.microsoftonline.com/seu_tenant_id/oauth2/v2.0/authorize
N8N_OAUTH2_TOKEN_URL=https://login.microsoftonline.com/seu_tenant_id/oauth2/v2.0/token
N8N_OAUTH2_USERINFO_URL=https://graph.microsoft.com/v1.0/me
N8N_OAUTH2_SCOPE=openid profile email User.Read

Configuração Azure AD SAML

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configuração SAML com Azure AD
N8N_SAML_ENABLED=true
N8N_SAML_ISSUER=https://sts.windows.net/seu_tenant_id/
N8N_SAML_ENTRY_POINT=https://login.microsoftonline.com/seu_tenant_id/saml2
N8N_SAML_CERT=/path/to/azure_cert.pem

GitHub Enterprise

Configuração GitHub OAuth

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configuração GitHub Enterprise
N8N_OAUTH2_ENABLED=true
N8N_OAUTH2_CLIENT_ID=seu_github_client_id
N8N_OAUTH2_CLIENT_SECRET=seu_github_client_secret
N8N_OAUTH2_AUTH_URL=https://github.empresa.com/login/oauth/authorize
N8N_OAUTH2_TOKEN_URL=https://github.empresa.com/login/oauth/access_token
N8N_OAUTH2_USERINFO_URL=https://github.empresa.com/api/v3/user
N8N_OAUTH2_SCOPE=read:user user:email

Monitoramento e Auditoria

Logs de Autenticação

Configuração de Logs

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configurar logs de autenticação
N8N_LOG_LEVEL=info
N8N_LOG_FORMAT=json
N8N_AUTH_LOG_ENABLED=true
N8N_AUTH_LOG_LEVEL=info
N8N_AUTH_LOG_FILE=/var/log/n8n/auth.log

Eventos Monitorados

// Eventos de autenticação monitorados
const authEvents = {
  login_success: "Login bem-sucedido",
  login_failed: "Tentativa de login falhou",
  logout: "Logout realizado",
  password_change: "Senha alterada",
  password_reset: "Senha resetada",
  two_factor_enabled: "2FA ativado",
  two_factor_disabled: "2FA desativado",
  account_locked: "Conta bloqueada",
  account_unlocked: "Conta desbloqueada",
  session_expired: "Sessão expirada",
  suspicious_activity: "Atividade suspeita detectada"
};

Alertas de Segurança

Configuração de Alertas

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configurar alertas de segurança
N8N_SECURITY_ALERTS_ENABLED=true
N8N_SECURITY_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL
N8N_SECURITY_EMAIL_ALERTS=true
N8N_SECURITY_EMAIL_FROM=security@empresa.com
N8N_SECURITY_EMAIL_TO=admin@empresa.com

Tipos de Alertas

// Configuração de alertas
const securityAlerts = {
  failedLogins: {
    threshold: 5,
    timeWindow: "15m",
    action: "notify_admin"
  },
  unusualActivity: {
    newLocation: true,
    unusualHours: true,
    action: "notify_user"
  },
  accountLockouts: {
    action: "notify_admin",
    immediate: true
  },
  twoFactorFailures: {
    threshold: 3,
    action: "notify_admin"
  }
};

Configuração Avançada

Proxy Reverso

Configuração Nginx com Autenticação

# <ion-icon name="settings-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Configuração Nginx com autenticação
server {
    listen 443 ssl http2;
    server_name seudominio.com;

    # SSL Configuration
    ssl_certificate /etc/letsencrypt/live/seudominio.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/seudominio.com/privkey.pem;

    # Security Headers
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header X-Frame-Options DENY always;
    add_header X-Content-Type-Options nosniff always;
    add_header X-XSS-Protection "1; mode=block" always;

    # Rate Limiting
    limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;
    limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;

    # Login endpoint com rate limiting
    location /login {
        limit_req zone=login burst=3 nodelay;
        proxy_pass http://n8n_backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # API endpoints
    location /api/ {
        limit_req zone=api burst=20 nodelay;
        proxy_pass http://n8n_backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # General proxy
    location / {
        proxy_pass http://n8n_backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Headers de Segurança

Configuração Completa de Headers

# <ion-icon name="shield-checkmark-outline" style={{ fontSize: '24px', color: '#ea4b71' }}></ion-icon> Headers de segurança completos
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options DENY always;
add_header X-Content-Type-Options nosniff always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https:; frame-ancestors 'none';" always;

Checklist de Segurança

Autenticação

  • Autenticação básica configurada
  • 2FA ativado para usuários críticos
  • Política de senhas forte implementada
  • SSO configurado (se aplicável)
  • LDAP/AD integrado (se aplicável)

Sessão

  • Timeout de sessão configurado
  • Limite de tentativas de login definido
  • Cookies seguros configurados
  • Sessão secreta definida
  • Logout automático implementado

Rede

  • Restrições de IP configuradas
  • Firewall configurado
  • VPN implementada (se necessário)
  • Acesso remoto seguro
  • Logs de acesso ativados

Monitoramento

  • Logs de autenticação ativados
  • Alertas de segurança configurados
  • Auditoria de acesso implementada
  • Relatórios de segurança gerados
  • Incidentes documentados

Próximos Passos

Agora que você configurou a autenticação:

  1. Usuários e Permissões - Configure controle de acesso granular
  2. Backup e Recovery - Implemente estratégias de backup
  3. Monitoramento - Configure alertas e métricas

Dica Pro

Sempre use HTTPS em produção e configure headers de segurança adequados. Implemente 2FA para todos os usuários administrativos.

Importante

Teste regularmente sua configuração de autenticação e mantenha logs de auditoria por pelo menos 90 dias para compliance.

Recurso Adicional

Considere implementar um sistema de gerenciamento de identidade (IAM) para automação de provisionamento e desprovisionamento de usuários.


Links úteis: