sfsso-frappe

Setup Frappe Provider

Panduan ini menjelaskan cara mengonfigurasi website Frappe sebagai penyedia OAuth2/OIDC.

1. Buat OAuth Client di Frappe

Masuk ke situs Frappe:

Desk → Integrations → OAuth2 Settings → Add New
Field Nilai
Client ID Client ID pilihanmu (atau auto-generated)
Client Secret Secret pilihanmu (atau auto-generated)
Redirect URIs https://aplikasi-mu.example.com/api/auth/callback/frappe
Scopes openid (Frappe otomatis memperluas ke Full Name, Email, User Image, Roles)
Skip Authorization No (kecuali ingin implicit flow)

2. Verifikasi Discovery Endpoint

curl -fsSL 'https://frappe-mu.example.com/.well-known/openid-configuration' | jq .

Kamu akan melihat:

{
  "issuer": "https://frappe-mu.example.com",
  "authorization_endpoint": "https://frappe-mu.example.com/api/method/frappe.integrations.oauth2.authorize",
  "token_endpoint": "https://frappe-mu.example.com/api/method/frappe.integrations.oauth2.get_token",
  "userinfo_endpoint": "https://frappe-mu.example.com/api/method/frappe.integrations.oauth2.openid_profile"
}

3. Set Environment Variables di Aplikasi

FRAPPE_SSO_BASE_URL=https://frappe-mu.example.com
FRAPPE_SSO_CLIENT_ID=<dari langkah 1>
FRAPPE_SSO_CLIENT_SECRET=<dari langkah 1>

4. Tes Alur Login

  1. Buka halaman login aplikasimu
  2. Klik "Login with Frappe"
  3. Kamu akan diarahkan ke halaman otorisasi Frappe
  4. Setelah menyetujui, kamu diarahkan kembali ke aplikasi

Troubleshooting

  • "Discovery metadata is missing authorization_endpoint" — Versi Frappe kamu mungkin belum mendukung OIDC discovery. Berikan endpoint eksplisit via authorizationEndpoint, tokenEndpoint, userInfoEndpoint di konfigurasi.
  • "OAuth state mismatch" — Pastikan NEXTAUTH_URL sama dengan URL yang dikunjungi user (termasuk protocol dan port).
  • "Token exchange failed" — Verifikasi clientSecret benar dan redirect URI cocok persis dengan yang dikonfigurasi di Frappe.