Implementasi SSO & OAuth di n8n untuk Otomasi Aman: Panduan Langkah-demi-Langkah
· 4 menit baca
Implementasi SSO & OAuth di n8n untuk Otomasi Aman: Panduan Langkah-demi-Langkah
Ringkasan: Artikel ini membahas cara mengamankan instance n8n dengan Single Sign-On (SSO) dan OAuth2, termasuk arsitektur, langkah konfigurasi (contoh: Keycloak / Auth0), penanganan token, scopes, webhook auth, dan best practices operasional.
Mengapa SSO & OAuth penting untuk n8n?
n8n adalah platform automasi yang sering mengakses banyak API, data sensitif, dan kredensial. Mengimplementasikan Single Sign-On (SSO) dan OAuth2 membantu tim menjaga keamanan, konsistensi identitas, dan kepatuhan. Manfaat utamanya:
- Sentralisasi otentikasi: Kontrol akses melalui provider identitas (IdP) seperti Keycloak, Auth0, Okta, atau Azure AD.
- Pengelolaan akses lebih baik: Gunakan group/role dari IdP untuk membatasi siapa yang bisa membuat/menjalankan workflow.
- Mengurangi pengelolaan password: Beralih ke SSO mengurangi eksposur kredensial lokal.
- OAuth untuk integrasi API: Manfaatkan token akses dan refresh token untuk mengakses API eksternal secara aman dari workflow n8n.
Komponen arsitektur
Sebelum konfigurasi, pahami komponen utama:
- n8n sebagai aplikasi automasi yang menerima callback OAuth dan menyimpan kredensial.
- Identity Provider (IdP) seperti Keycloak/Auth0/Okta/Azure AD yang menyediakan SSO dan endpoint OAuth2 (authorization, token, jwks).
- Reverse proxy / Ingress (Nginx, Traefik) untuk TLS, redirect HTTP→HTTPS, dan header forwarding (X-Forwarded-*).
- Secret store (Vault atau KMS) untuk menyimpan client secrets dan private keys—jangan simpan langsung di environment variables pada instance publik.
Kasus penggunaan umum
- SSO untuk login UI n8n (menggantikan autentikasi user/password lokal).
- OAuth2 untuk node seperti Google, Microsoft Graph, GitHub—otomasi login dan refresh token otomatis.
- Webhook yang divalidasi oleh JWT (verifikasi signature menggunakan jwks_uri dari IdP).
Langkah 1 — Persiapan IdP (contoh Keycloak)
- Buat realm baru (mis. nip-realm) di Keycloak.
- Buat client baru: Client ID = n8n-web, Client Protocol = openid-connect.
- Atur Access Type = confidential (agar mendapatkan client secret).
- Tambahkan Redirect URI n8n, misal: https://n8n.example.com/rest/oauth2-credential/callback
- Konfigurasi scope default: openid profile email. Tambahkan role mapper jika ingin sediakan role/group ke claim.
Catat: client_id, client_secret, authorization_endpoint, token_endpoint, dan jwks_uri.
Langkah 2 — Konfigurasi n8n untuk SSO
n8n mendukung beberapa strategi autentikasi. Untuk SSO berbasis OpenID Connect:
- Set environment variables n8n:
N8N_AUTH_ACTIVE=true
N8N_AUTH_STRATEGY=oauth
N8N_OAUTH_CLIENT_ID=<client_id>
N8N_OAUTH_CLIENT_SECRET=<client_secret>
N8N_OAUTH_AUTHORIZE_URL=<authorization_endpoint>
N8N_OAUTH_TOKEN_URL=<token_endpoint>
N8N_OAUTH_USER_INFO_URL=<userinfo_endpoint> # optional
N8N_OAUTH_CALLBACK_URL=https://n8n.example.com/rest/oauth2-credential/callback
Catatan: Pastikan callback URL sama dengan yang didaftar di IdP. Jika menggunakan reverse-proxy, atur X-Forwarded-* dan NODE_TLS_REJECT_UNAUTHORIZED sesuai kebutuhan.
Langkah 3 — Menyimpan client secret dengan aman
Jangan commit secrets ke repo. Gunakan Vault atau service secret manager cloud. Contoh pendekatan:
- Simpan client_secret di HashiCorp Vault, lalu injeksikan ke container environment saat deployment.
- Untuk Kubernetes, gunakan Secrets + CSI driver atau External Secrets Operator.
Langkah 4 — OAuth2 dalam Workflow n8n (contoh Google/Microsoft)
Banyak node n8n sudah mendukung OAuth2 flow built-in. Tapi untuk integrasi custom atau service internal, lakukan pattern ini:
- Buat credential OAuth2 di n8n, masukkan client_id, client_secret, authorize URL, token URL.
- Saat user authorize, n8n menyimpan access token + refresh token terenkripsi.
- Gunakan node HTTP Request dan pilih credential tadi; n8n akan otomatis refresh token saat expired.
Contoh JSON credential singkat (di UI n8n, bukan file konfigurasi)
{
"clientId": "abc123",
"clientSecret": "***",
"authUrl": "https://idp.example.com/auth",
"tokenUrl": "https://idp.example.com/token",
"scope": "openid profile email",
"redirectUri": "https://n8n.example.com/rest/oauth2-credential/callback"
}
Menangani Refresh Token dan Rotasi
Best practice:
- Pastikan IdP mengeluarkan refresh token jika aplikasi memerlukan akses jangka panjang.
- Implementasikan rotasi refresh token di IdP (refresh token one-time use) dan pastikan n8n mendukung update token yang diterima dari token endpoint.
- Kaji masa berlaku token dan kurangi scope saat tidak diperlukan.
Webhook dan Verifikasi JWT
Untuk webhook yang memicu workflow n8n, gunakan JWT untuk memverifikasi integritas:
- IdP menerbitkan JWT signed (RS256) — simpan
jwks_uridi n8n atau verifikasi pada runtime menggunakan node HTTP Request + Function. - Di workflow, lakukan verifikasi signature dan claims (iss, aud, exp) sebelum memproses payload.
Best Practices Keamanan & Governance
- Least privilege: Berikan scope dan role minimal yang dibutuhkan setiap credential.
- Audit & logging: Aktifkan audit log di IdP dan n8n untuk perubahan credential dan akses workflow.
- Rotate secrets: Jadwalkan rotasi client secret dan refresh token policy.
- Network segmentation: Batasi akses admin n8n ke jaringan internal saja, gunakan VPN atau private endpoint.
- Backup konfigurasi: Backup database n8n dan encrypted credentials secara berkala.
Troubleshooting umum
- 404/Redirect mismatch: Periksa kembali Redirect URI di IdP dan N8N_OAUTH_CALLBACK_URL.
- Invalid client: Pastikan client_id/secret benar dan client berstatus aktif (not disabled).
- Token tidak ter-refresh: Cek grant_type yang didukung dan apakah refresh_token dikembalikan oleh token endpoint.
- Clock skew issues: Sinkronkan NTP pada server n8n dan IdP untuk menghindari error exp/iat.
Contoh deployment singkat (Kubernetes + Keycloak)
Ringkasan langkah:
- Deploy Keycloak di namespace auth.
- Deploy n8n di namespace automation dengan Ingress TLS (Traefik/NGINX) dan annotasi untuk forward headers.
- Gunakan External Secrets untuk mengambil client_secret ke Kubernetes Secret.
- Set environment variables n8n seperti pada Langkah 2, tarik secret dari K8s Secret.
Kesimpulan
Mengimplementasikan SSO dan OAuth di n8n meningkatkan keamanan, mengurangi beban manajemen kredensial, dan memungkinkan integrasi enterprise-friendly. Mulailah dengan IdP yang Anda pilih (Keycloak, Auth0, Okta), atur redirect/authorize/token endpoint dengan benar, simpan secrets di secret manager, dan terapkan kebijakan least privilege serta audit. Dengan langkah-langkah ini, workflow automasi Anda akan lebih aman dan mudah diawasi.
Butuh contoh konfigurasi Keycloak/Auth0 secara lengkap atau template Kubernetes manifest n8n + Ingress? Tinggalkan komentar atau hubungi JIPRAKS Classroom untuk tutorial lanjutan.