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
- Buka halaman login aplikasimu
- Klik "Login with Frappe"
- Kamu akan diarahkan ke halaman otorisasi Frappe
- 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,userInfoEndpointdi konfigurasi. - "OAuth state mismatch" — Pastikan
NEXTAUTH_URLsama dengan URL yang dikunjungi user (termasuk protocol dan port). - "Token exchange failed" — Verifikasi
clientSecretbenar dan redirect URI cocok persis dengan yang dikonfigurasi di Frappe.