Menguasai Pendaftaran Aplikasi Multi-Penyewa Entra ID untuk SPFx
By Mirko Peters ·
Selamat datang kembali di podcast! Jika Anda pernah mencoba memindahkan solusi SharePoint Framework (SPFx) yang dibangun dengan susah payah di tenant pengembangan Anda sendiri ke lingkungan klien, Anda pasti sudah tahu rasa cemas ketika semuanya tiba-tiba gagal total. Diam. Web part kosong. Perulangan login yang tak berujung. Autentikasi lintas-penyewa adalah ujian utama bagi pengembang Microsoft
Automatically translated with AI from the original post. Read the English original
Selamat datang kembali di podcast! Jika Anda pernah mencoba memindahkan solusi SharePoint Framework (SPFx) yang dibangun dengan susah payah di tenant pengembangan Anda sendiri ke lingkungan klien, Anda pasti sudah tahu rasa cemas ketika semuanya tiba-tiba gagal total. Diam. Web part kosong. Perulangan login yang tak berujung. Autentikasi lintas-penyewa adalah ujian utama bagi pengembang Microsoft 365, dan untuk berhasil, Anda perlu menguasai seluk-beluk pendaftaran aplikasi Entra ID, cakupan dinamis, serta keamanan dengan hak akses minimum.
Dalam panduan komprehensif ini, kami memperluas semua yang kami bahas di episode terbaru kami. Untuk menyelami lebih dalam diskusi audio tersebut, dengarkan pembahasan detail kami di Fix Multi-Tenant SPFx Authentication.
Pendahuluan: Mengapa SPFx Multi-Penyewa Itu Level Sulit
Memindahkan aplikasi SPFx melintasi batas identitas sering disebut sebagai "level sulit" dan memang beralasan. Saat membangun dalam satu tenant, Entra ID, struktur situs SharePoint, dan izin API sebagian besar bersifat implisit atau mudah dilewati melalui hak istimewa admin global. Begitu Anda masuk ke model multi-penyewa, baik sebagai Independent Software Vendor (ISV) yang menjadikan web part sebagai produk maupun tim TI internal yang mengelola beberapa tenant anak perusahaan, jalan pintas tersebut hilang.
Kini Anda menghadapi batas direktori yang ketat, kerangka persetujuan yang mewajibkan persetujuan eksplisit dari administrator, serta topologi situs yang unik. Jika pendaftaran aplikasi Anda dikunci sebagai single-tenant, atau jika kode Anda bergantung pada parameter lingkungan yang di-hardcode, penerapan Anda dijamin gagal di produksi.
Untuk Siapa Panduan Ini
Sebelum masuk ke mekanisme teknis, mari kita identifikasi siapa saja yang perlu menguasai pola arsitektur ini:
- Pengembang SPFx dan konsultan Microsoft 365 yang mengirim solusi ke beberapa tenant yang ingin menghindari konfigurasi ulang manual untuk setiap penerapan klien.
- Admin TI dan MSP yang mendukung lingkungan SharePoint Online klien yang perlu menjaga postur keamanan yang ketat sambil mengaktifkan solusi pengembang modern.
- Mitra dan ISV yang menjadikan web part dan ekstensi SPFx sebagai produk yang membutuhkan jalur pasar yang dapat diulang dan skalabel ke ratusan tenant pelanggan yang berbeda.
Poin Penting
Untuk berhasil menavigasi penerapan multi-penyewa, jadikan prinsip inti berikut sebagai fokus utama dalam arsitektur Anda:
- Autentikasi bukan sekadar boilerplate: Gunakan aplikasi Entra ID multi-penyewa dan wajibkan persetujuan admin per tenant; verifikasi status keamanan ini saat runtime.
- Jangan pernah meng-hardcode detail tenant: Muat URL, ID, dan cakupan secara dinamis dari sumber konfigurasi yang sadar-tenant; simpan rahasia backend yang diperlukan dengan aman di Azure Key Vault.
- Hasil kosong dari Graph bukan berarti kode yang rusak: Ketika Microsoft Graph mengembalikan larik kosong, penyebabnya hampir selalu persetujuan yang belum ada atau data direktori serta filter yang tidak cocok, bukan kesalahan sintaks dalam basis kode Anda.
- Satu paket, banyak tenant: Rancang solusi SPFx Anda agar sepenuhnya agnostik terhadap tenant, dipasangkan dengan penerapan yang dibatasi per tenant, sehingga tidak perlu lagi build khusus untuk setiap klien.
- Deteksi kegagalan sejak dini: Pusatkan telemetri dan pemeriksaan kesehatan menggunakan Application Insights atau Azure Monitor yang disesuaikan per tenant.
Sorotan
Sepanjang eksplorasi teknis kami, kami mencapai beberapa tonggak penting yang harus Anda tangani dalam siklus pengembangan Anda:
- Tiga kesalahan autentikasi yang menggagalkan peluncuran lintas-penyewa, mencakup pendaftaran aplikasi single-tenant, mitos persetujuan sekali saja, dan menanamkan rahasia langsung ke dalam kode sisi klien.
- Mengapa Microsoft Graph berjalan lancar di tenant pengembangan Anda tetapi mengembalikan nol mutlak di lingkungan klien, dan cara memvalidasinya sebelum go-live.
- Mengemas sekali, mengonfigurasi di mana saja: cetak biru arsitektur untuk SPFx yang benar-benar agnostik terhadap tenant.
- Strategi pencatatan dan pemantauan yang menangkap masalah konfigurasi senyap sebelum klien Anda menyadarinya.
- Struktur tata kelola yang menjaga organisasi Anda tetap patuh sambil mempertahankan kecepatan pengiriman yang tinggi.
Daftar Periksa Cepat (Salin/Tempel)
- Pendaftaran Aplikasi Entra ID
- Atur Supported account types: Multitenant.
- Tentukan delegated Graph scopes yang tepat dan benar-benar diperlukan dengan mengikuti prinsip hak akses minimum.
- Konfigurasikan redirect URI yang valid untuk SharePoint Online sekaligus lingkungan pengembangan lokal Anda.
- Pengerasan Proyek SPFx
- Gunakan MSGraphClient atau AadHttpClient untuk semua panggilan API delegated.
- Baca konfigurasi spesifik penyewa (seperti endpoint dan ID situs target) dari daftar konfigurasi SharePoint khusus atau API yang aman; pastikan tidak ada rahasia sama sekali di kode frontend.
- Terapkan pemeriksaan izin saat runtime yang menampilkan banner "Admin consent required" dengan tautan langsung (deep link) ketika izin tidak tersedia, tanpa menghentikan fungsi aplikasi secara kasar.
- Alur Persetujuan (Consent Flow)
- Sediakan halaman onboarding penyewa khusus yang menampilkan scope yang diperlukan, URL persetujuan admin yang tepat, dan langkah validasi.
- Dukung model persetujuan per audiens, dengan membedakan antara peluncuran untuk seluruh organisasi dan kelompok pilot yang ditargetkan.
- Pengemasan & Penerapan
- Kemas solusi Anda sekali menjadi file .sppkg standar dan aktifkan penerapan berlingkup penyewa jika sesuai.
- Publikasikan melalui App Catalog pusat sekaligus dokumentasikan dengan lengkap langkah penambahan di tingkat situs.
- Otomatiskan siklus rilis Anda menggunakan pipeline CI/CD yang andal (build, bundle, package, upload, dan deploy).
- Pemantauan & Dukungan
- Kirim telemetri terperinci yang mencakup Tenant ID, correlation ID, fitur tertentu, dan kode error.
- Hubungkan Application Insights atau dashboard Azure Monitor disertai peringatan (alert) yang dapat ditindaklanjuti.
- Dokumentasikan prosedur rollback yang jelas menggunakan versi paket sebelumnya, beserta peta versi terperinci per penyewa.
Jebakan Umum (dan Solusinya)
Bahkan pengembang berpengalaman pun sering terjebak dalam perangkap yang bisa diprediksi saat mengonfigurasi aplikasi multi-penyewa. Berikut cara mendiagnosis dan mengatasinya dengan cepat:
- Gejala: Login berulang atau skenario yang menjengkelkan "berfungsi untuk saya, tidak untuk mereka".
Penyebab: Pendaftaran aplikasi Entra ID Anda masih dikonfigurasi sebagai single-tenant, atau reply URL Anda tidak sesuai dengan lingkungan target.
Solusi: Ubah pendaftaran aplikasi Anda menjadi multi-tenant, perbaiki redirect URI Anda, dan picu permintaan persetujuan baru. - Gejala: Microsoft Graph mengembalikan kumpulan data yang sepenuhnya kosong.
Penyebab: Persetujuan admin penyewa belum diberikan atau filter direktori terlalu membatasi.
Solusi: Picu alur persetujuan admin yang sesuai, uji kueri Anda langsung di Graph Explorer menggunakan pengguna nyata dari penyewa klien, dan longgarkan asumsi atau filter yang terlalu ketat dalam kode Anda. - Gejala: Pengguna tidak dapat menambahkan web part ke halaman mereka.
Penyebab: Paket belum diterapkan dengan benar ke app catalog penyewa, atau kebijakan aplikasi organisasi memblokirnya.
Solusi: Verifikasi status penerapan App Catalog dan tinjau pengaturan serta kebijakan aplikasi penyewa. - Gejala: Harus membangun ulang paket untuk setiap perubahan konfigurasi kecil di setiap klien.
Penyebab: ID, URL, atau rahasia yang di-hardcode tertanam langsung di dalam bundle.
Solusi: Pisahkan konfigurasi Anda ke luar kode; andalkan daftar konfigurasi SharePoint atau Azure Key Vault, dan baca nilai-nilai tersebut secara dinamis saat runtime.
Hal Penting Tata Kelola & Keamanan
Keamanan tidak boleh menjadi pertimbangan belakangan saat menerapkan kode ke direktori pelanggan eksternal. Terapkan hal-hal penting tata kelola berikut untuk menjaga kepercayaan:
- Terapkan scope dengan hak akses minimum dan lakukan peninjauan scope secara berkala untuk menghapus izin yang tidak digunakan.
- Simpan rahasia aplikasi backend secara aman di Azure Key Vault dan tetapkan jadwal rotasi secara berkala.
- Manfaatkan kebijakan izin aplikasi Teams dan SharePoint untuk membatasi secara ketat audiens target dan mencegah penggunaan yang tidak sah.
- Pelihara buku catatan persetujuan (consent ledger) yang komprehensif yang mencatat siapa yang memberikan persetujuan, kapan persetujuan diberikan, dan scope apa saja yang disetujui.
- Selaraskan branding web part Anda secara dinamis melalui API tema Microsoft 365 alih-alih memasukkan aset gaya khusus penyewa ke dalam kode Anda.
Rencana Validasi (Sebelum Go-Live Klien)
Jangan pernah menerapkan secara membabi buta. Jalankan rencana validasi ini sebelum mempresentasikan solusi Anda kepada klien:
- Uji semua panggilan Microsoft Graph secara langsung di dalam penyewa klien menggunakan Graph Explorer dengan akun pengguna yang sama persis dan delegated scopes yang sama.
- Jalankan penerapan pilot terlokalisasi pada satu site collection yang terisolasi dengan sekelompok kecil pengguna yang ditargetkan.
- Periksa riwayat versi dan kemampuan rollback langsung di dalam SharePoint App Catalog.
- Uji skenario offline dan token kedaluwarsa untuk memastikan pesan kesalahan dan alur pemulihan otomatis Anda berjalan sebagaimana mestinya.
Pertanyaan Umum
Apakah saya memerlukan izin aplikasi untuk SPFx?
Biasanya tidak. Solusi SPFx berjalan dalam konteks pengguna yang didelegasikan. Izin aplikasi memerlukan persetujuan administratif tambahan dan pola arsitektur khusus, sehingga gunakan izin tersebut hanya jika tidak ada alternatif lain yang layak.
Bisakah saya menghindari persetujuan per penyewa?
Tidak. Administrator setiap penyewa klien harus secara eksplisit memberikan cakupan (scope) yang diminta aplikasi Anda. Namun, Anda dapat menyederhanakan proses ini secara signifikan dengan membangun antarmuka onboarding terpandu dan banner notifikasi proaktif saat runtime.
Bagaimana cara mempertahankan satu basis kode untuk banyak klien?
Buat solusi Anda sepenuhnya agnostik terhadap penyewa, pisahkan semua konfigurasi khusus lingkungan dari kode, dan otomatiskan pipeline pengemasan serta penerapan Anda. Manfaatkan feature flag untuk mengelola pengaturan khusus klien secara aman.
Bagaimana cara mendiagnosis "datanya kosong" lebih cepat?
Catat respons Graph mentah bersamaan dengan pemeriksaan validasi scope. Saat terjadi kegagalan, tampilkan notifikasi inline yang berbunyi "Persetujuan belum diberikan atau scope tidak memadai" dengan tautan dalam (deep link) langsung untuk memperbaiki masalah secara instan.
Kesimpulan
Menguasai pendaftaran aplikasi Entra ID multi-penyewa untuk solusi SharePoint Framework adalah yang membedakan skrip hobi dari produk perangkat lunak kelas enterprise. Dengan mengubah pola pikir ke arah pengemasan agnostik penyewa, pemuatan konfigurasi dinamis, dan validasi persetujuan saat runtime yang andal, Anda dapat menghilangkan kegagalan penerapan yang tidak terdeteksi dan memberikan pengalaman yang mulus bagi setiap klien.
Untuk mendengar lebih banyak kisah nyata dan keputusan arsitektur di balik solusi ini, pastikan Anda menyimak episode podcast terkait: Fix Multi-Tenant SPFx Authentication. Terima kasih sudah membaca, dan selamat ngoding!