Memahami akses khusus aplikasi
Saat aplikasi langsung mengakses sumber daya, seperti Microsoft Graph, aksesnya tidak terbatas pada file atau operasi yang tersedia untuk satu pengguna. Aplikasi memanggil API secara langsung menggunakan identitasnya sendiri, dan pengguna atau aplikasi dengan hak admin harus mengotorisasinya untuk mengakses sumber daya. Skenario ini adalah akses khusus aplikasi.
Kapan saya harus menggunakan akses khusus aplikasi?
Dalam kebanyakan kasus, akses khusus aplikasi lebih luas dan lebih kuat daripada akses yang didelegasikan, jadi Anda hanya boleh menggunakan akses khusus aplikasi jika diperlukan. Ini biasanya pilihan yang tepat jika:
- Aplikasi perlu berjalan dengan cara otomatis, tanpa input pengguna. Misalnya, skrip harian yang memeriksa email dari kontak tertentu dan mengirim respons otomatis.
- Aplikasi perlu mengakses sumber daya milik beberapa pengguna yang berbeda. Misalnya, aplikasi pencadangan atau pencegahan kehilangan data mungkin perlu mengambil pesan dari berbagai saluran obrolan, masing-masing dengan peserta yang berbeda.
- Anda merasa tergoda untuk menyimpan kredensial secara lokal dan mengizinkan aplikasi untuk masuk "sebagai" pengguna atau admin.
Sebaliknya, Anda tidak boleh menggunakan akses khusus aplikasi di mana pengguna biasanya akan masuk untuk mengelola sumber daya mereka sendiri. Jenis skenario ini harus menggunakan akses yang didelegasikan agar memiliki hak istimewa paling sedikit.
Mengotorisasi aplikasi untuk melakukan panggilan khusus aplikasi
Untuk melakukan panggilan khusus aplikasi, Anda perlu menetapkan peran aplikasi klien yang sesuai. Peran aplikasi juga disebut sebagai izin khusus aplikasi. Mereka adalah peran aplikasi karena hanya memberikan akses dalam konteks aplikasi sumber daya yang menentukan peran.
Misalnya, untuk membaca daftar semua tim yang dibuat di organisasi, Anda perlu menetapkan aplikasi Anda peran aplikasi Microsoft Graph Team.ReadBasic.All
. Peran aplikasi ini memberikan kemampuan untuk membaca data ini saat Microsoft Graph adalah aplikasi sumber daya. Penugasan ini tidak menetapkan aplikasi klien Anda ke peran Teams yang mungkin memungkinkannya untuk melihat data ini melalui layanan lain.
Sebagai pengembang, Anda perlu mengonfigurasi semua izin khusus aplikasi yang diperlukan, juga disebut sebagai peran aplikasi pada pendaftaran aplikasi Anda. Anda dapat mengonfigurasi izin khusus aplikasi yang diminta aplikasi melalui portal Azure atau Microsoft Graph. Akses khusus aplikasi tidak mendukung persetujuan dinamis, sehingga Anda tidak dapat meminta izin individual atau sekumpulan izin saat runtime.
Setelah Mengonfigurasi semua izin yang dibutuhkan aplikasi, aplikasi harus mendapatkan persetujuan admin agar dapat mengakses sumber daya. Misalnya, hanya pengguna dengan peran Administrator Global yang dapat memberikan izin khusus aplikasi (peran aplikasi) untuk Microsoft Graph API. Pengguna dengan peran admin lain, seperti Administrator Aplikasi dan Administrator Aplikasi Cloud, dapat memberikan izin khusus aplikasi untuk sumber daya lain.
Pengguna admin dapat memberikan izin khusus aplikasi dengan menggunakan portal Azure atau dengan membuat pemberian secara terprogram melalui Microsoft Graph API. Anda juga dapat meminta persetujuan interaktif dari dalam aplikasi Anda, tetapi opsi ini tidak lebih disukai karena akses khusus aplikasi tidak memerlukan pengguna.
Pengguna konsumen dengan Akun Microsoft, seperti akun Outlook.com atau Xbox Live, tidak pernah dapat mengotorisasi akses khusus aplikasi.
Selalu ikuti prinsip hak istimewa paling sedikit: Anda tidak boleh meminta peran aplikasi yang tidak diperlukan aplikasi Anda. Prinsip ini membantu membatasi risiko keamanan jika aplikasi Anda disusupi dan memudahkan administrator untuk memberikan akses aplikasi Anda. Misalnya, jika aplikasi Anda hanya perlu mengidentifikasi pengguna tanpa membaca informasi profil terperinci mereka, Anda harus meminta peran aplikasi Microsoft Graph User.ReadBasic.All
yang lebih terbatas alih-alih User.Read.All
.
Merancang dan menerbitkan peran aplikasi untuk layanan sumber daya
Jika Anda membangun layanan di ID Microsoft Entra yang mengekspos API untuk dihubungi klien lain, Anda mungkin ingin mendukung akses otomatis dengan peran aplikasi (izin khusus aplikasi). Anda dapat menentukan peran aplikasi untuk aplikasi Anda di bagian Peran aplikasi dari pendaftaran aplikasi Anda di pusat admin Microsoft Entra. Untuk informasi selengkapnya tentang cara membuat peran aplikasi, lihat Mendeklarasikan peran untuk aplikasi.
Saat mengekspos peran aplikasi untuk digunakan orang lain, berikan deskripsi yang jelas tentang skenario kepada admin yang akan menetapkannya. Peran aplikasi umumnya harus sesempit mungkin dan mendukung skenario fungsional tertentu, karena akses khusus aplikasi tidak dibatasi oleh hak pengguna. Hindari mengekspos satu peran yang memberikan akses penuh read
atau penuh read/write
ke semua API dan sumber daya yang dimuat layanan Anda.
Catatan
Peran aplikasi (izin khusus aplikasi) juga dapat dikonfigurasi untuk mendukung penugasan kepada pengguna dan grup. Pastikan Anda mengonfigurasi peran aplikasi dengan benar untuk skenario akses yang dimaksudkan. Jika Anda ingin peran aplikasi API Anda digunakan untuk akses khusus aplikasi, pilih aplikasi sebagai satu-satunya jenis anggota yang diizinkan saat membuat peran aplikasi.
Bagaimana cara kerja akses khusus aplikasi?
Hal terpenting yang perlu diingat tentang akses khusus aplikasi adalah bahwa aplikasi panggilan bertindak atas nama sendiri dan sebagai identitasnya sendiri. Tidak ada interaksi pengguna. Jika aplikasi telah ditetapkan ke peran aplikasi tertentu untuk sumber daya, aplikasi telah sepenuhnya tidak dibatasi aksesnya ke semua sumber daya dan operasi yang diatur oleh peran aplikasi tersebut.
Setelah aplikasi ditetapkan ke satu atau beberapa peran aplikasi (izin khusus aplikasi), aplikasi dapat meminta token khusus aplikasi dari ID Microsoft Entra menggunakan alur kredensial klien atau alur autentikasi lain yang didukung. Peran yang ditetapkan ditambahkan ke roles
klaim token akses aplikasi.
Dalam beberapa skenario, identitas aplikasi dapat menentukan apakah akses diberikan, mirip dengan hak pengguna dalam panggilan yang didelegasikan. Misalnya, Application.ReadWrite.OwnedBy
peran aplikasi memberi aplikasi kemampuan untuk mengelola perwakilan layanan yang dimiliki aplikasi itu sendiri.
Contoh akses khusus aplikasi - Pemberitahuan email otomatis melalui Microsoft Graph
Contoh berikut mengilustrasikan skenario otomatisasi realistis.
Alice ingin memberi tahu tim melalui email setiap kali folder pelaporan divisi yang berada di berbagi file Windows mendaftarkan dokumen baru. Alice membuat tugas terjadwal yang menjalankan skrip PowerShell untuk memeriksa folder dan menemukan file baru. Skrip kemudian mengirim email menggunakan kotak surat yang dilindungi oleh API sumber daya, Microsoft Graph.
Skrip berjalan tanpa interaksi pengguna, oleh karena itu sistem otorisasi hanya memeriksa otorisasi aplikasi. Exchange Online memeriksa apakah klien yang melakukan panggilan telah diberikan izin aplikasi (peran aplikasi), Mail.Send
oleh administrator. Jika Mail.Send
tidak diberikan ke aplikasi, maka Exchange Online akan gagal dalam permintaan.
POST /users/{id}/{userPrincipalName}/sendMail | Aplikasi klien diberikan Mail.Send | Aplikasi klien tidak diberikan Mail.Send |
---|---|---|
Skrip menggunakan kotak surat Alice untuk mengirim email. | 200 – Akses diberikan. Admin mengizinkan aplikasi mengirim email sebagai pengguna mana pun. | 403 - Tidak sah. Admin belum mengizinkan klien ini mengirim email. |
Skrip membuat kotak surat khusus untuk mengirim email. | 200 – Akses diberikan. Admin mengizinkan aplikasi mengirim email sebagai pengguna mana pun. | 403 - Tidak sah. Admin belum mengizinkan klien ini mengirim email. |
Contoh yang diberikan adalah ilustrasi sederhana otorisasi aplikasi. Layanan Exchange Online produksi mendukung banyak skenario akses lainnya, seperti membatasi izin aplikasi ke kotak surat Exchange Online tertentu.