Autenticação e Acesso
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.
Configuração Básica
Configuração de Portas
# Configuração básica de portas
N8N_PORT=5678
N8N_PROTOCOL=https
N8N_HOST=0.0.0.0
N8N_PORT=5678
Política de Senhas
# 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
Configuração 2FA
{
"userId": "user123",
"twoFactorEnabled": true,
"twoFactorSecret": "JBSWY3DPEHPK3PXP",
"backupCodes": [
"12345678",
"87654321",
"11223344"
]
}
SSO Single Sign-On
SAML
# 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
# Configuração OAuth
N8N_OAUTH_ENABLED=true
N8N_OAUTH_CLIENT_ID=seu_client_id
N8N_OAUTH_CLIENT_SECRET=SEU_CLIENT_SECRET_AQUI
N8N_OAUTH_AUTHORIZATION_URL=https://seu-provider.com/oauth/authorize
N8N_OAUTH_TOKEN_URL=https://seu-provider.com/oauth/token
N8N_OAUTH_USERINFO_URL=https://seu-provider.com/oauth/userinfo
Active Directory
# 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=SUA_SENHA_AD_AQUI
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
N8N_SESSION_TIMEOUT=3600000
N8N_SESSION_SECRET=SUA_SESSION_SECRET_AQUI
N8N_SESSION_COOKIE_SECURE=true
N8N_SESSION_COOKIE_HTTPONLY=true
Horários de Acesso
# 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
# Verificar horário de acesso
CURRENT_DAY=$(date +%A | tr '[:upper:]' '[:lower:]')
ALLOWED_START="09:00"
ALLOWED_END="18:00"
ALLOWED_DAYS="monday,tuesday,wednesday,thursday,friday"
# Verificar dia da semana
if [[ ! " $ALLOWED_DAYS " =~ " $CURRENT_DAY " ]]; then
echo "Acesso negado: Fora dos dias permitidos"
exit 1
fi
# Verificar horário
CURRENT_TIME=$(date +%H:%M)
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
Logs de Segurança
{
"securityLogs": {
"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
# 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
# Configuração Nginx com autenticação
server {
listen 443 ssl http2;
server_name n8n.empresa.com;
# SSL Configuration
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# 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
# 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;
Próximos Passos
- Monitoramento - Alertas de segurança
- Backup e Recovery - Recuperação de dados
- LGPD Compliance - Conformidade legal
Recursos Relacionados
- HTTP Request - Fazer chamadas para APIs
- Expressões n8n - Personalizar autenticação
- Tratamento de Erros - Lidar com falhas
- Credenciais - Gerenciar tokens de API