AI Class

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)

  1. Buat realm baru (mis. nip-realm) di Keycloak.
  2. Buat client baru: Client ID = n8n-web, Client Protocol = openid-connect.
  3. Atur Access Type = confidential (agar mendapatkan client secret).
  4. Tambahkan Redirect URI n8n, misal: https://n8n.example.com/rest/oauth2-credential/callback
  5. 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:

  1. Buat credential OAuth2 di n8n, masukkan client_id, client_secret, authorize URL, token URL.
  2. Saat user authorize, n8n menyimpan access token + refresh token terenkripsi.
  3. 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:

  1. IdP menerbitkan JWT signed (RS256) — simpan jwks_uri di n8n atau verifikasi pada runtime menggunakan node HTTP Request + Function.
  2. 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:

  1. Deploy Keycloak di namespace auth.
  2. Deploy n8n di namespace automation dengan Ingress TLS (Traefik/NGINX) dan annotasi untuk forward headers.
  3. Gunakan External Secrets untuk mengambil client_secret ke Kubernetes Secret.
  4. 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.

Artikel terkait