Contoh API yang dilindungi oleh kerangka kerja persetujuan identitas Microsoft

Artikel ini dapat membantu Anda, sebagai pengembang, untuk merancang strategi izin aplikasi Anda untuk memberikan hak istimewa paling sedikit. Sebelum melanjutkan, lihat artikel perlindungan API untuk mempelajari praktik terbaik untuk pendaftaran, izin, dan akses.

Mari kita lihat bagaimana API yang dilindungi oleh platform identitas Microsoft menggunakan kerangka kerja persetujuan identitas Microsoft. Kami menggunakan Microsoft Graph API sebagai contoh kami karena membuat penggunaan paling ekstensif dari kerangka kerja persetujuan platform identitas Microsoft.

Konvensi penamaan untuk nama hak akses

Tim Microsoft Graph membuat konvensi penamaan untuk nama izin untuk mempermudah menyambungkan izin ke akses sumber daya yang diaktifkan izin. Nama izin Microsoft Graph mematuhi pola resource.operation.constraint sederhana. Dua operasi utama adalah Read and ReadWrite (yang mencakup pembaruan dan penghapusan).

Elemen batasan memengaruhi tingkat akses yang dimiliki aplikasi Anda dalam direktori. Microsoft Graph mendukung batasan ini:

  • Semua memberikan izin bagi aplikasi Anda untuk melakukan operasi pada semua sumber daya dari jenis yang ditentukan dalam direktori.
  • Berbagi memberikan izin bagi aplikasi Anda untuk melakukan operasi pada sumber daya yang telah dibagikan oleh pengguna lain kepada pengguna yang sedang masuk.
  • AppFolder memberikan izin bagi aplikasi Anda untuk membaca dan menulis file di folder khusus di OneDrive. Batasan ini hanya diekspos pada objek izin File dan hanya valid untuk akun Microsoft.
  • Jika Anda menentukan Tidak ada batasan, aplikasi Anda hanya dapat melakukan operasi pada sumber daya yang dimiliki pengguna yang masuk.

Akses dan operasi terhadap sumber daya tertentu

Mari kita lihat beberapa izin, atau cakupan, untuk objek pengguna di Microsoft Graph untuk melihat bagaimana perancang Microsoft API mengaktifkan akses dan operasi tertentu terhadap sumber daya tertentu:

Persetujuan Tampilkan String Deskripsi
User.Read Masuk dan membaca profil pengguna Memungkinkan pengguna untuk masuk ke aplikasi dan memungkinkan aplikasi membaca profil pengguna yang masuk. Ini juga memungkinkan aplikasi untuk membaca informasi perusahaan dasar pengguna yang masuk.
User.ReadWrite Membaca dan menulis akses ke profil pengguna Memungkinkan aplikasi membaca profil lengkap pengguna yang masuk. Ini juga memungkinkan aplikasi untuk memperbarui informasi profil pengguna yang masuk atas nama mereka.

User.Read dan User.ReadWrite ada (dibandingkan dengan satu izin seperti User.Access itu tidak ada) sehingga aplikasi dapat mengikuti prinsip Zero Trust dengan hak istimewa paling sedikit. Jika pengembang tidak memiliki persyaratan dan kode untuk memperbarui profil pengguna, aplikasi tidak meminta User.ReadWrite. Oleh karena itu, aktor jahat tidak dapat membahayakan aplikasi dan menggunakannya untuk mengubah data.

Perhatikan bahwa User.Read tidak hanya memberikan akses aplikasi ke objek pengguna. Setiap izin mewakili rentang operasi tertentu. Penting bahwa pengembang dan admin membaca deskripsi izin untuk melihat dengan tepat apa yang memungkinkan izin tertentu. User.Read, selain mengaktifkan membaca profil lengkap pengguna saat ini, memungkinkan aplikasi untuk melihat informasi dasar dari objek Organisasi di Microsoft Graph.

Mari kita lihat izin lain:

Persetujuan Tampilkan String Deskripsi
User.ReadBasic.All Membaca profil dasar semua pengguna Memungkinkan aplikasi membaca sekumpulan properti profil dasar pengguna lain di organisasi Anda atas nama pengguna yang masuk. Termasuk nama tampilan, nama depan dan keluarga, alamat email, ekstensi terbuka, dan foto. Memungkinkan aplikasi membaca profil lengkap pengguna yang masuk.

Rentang operasi User.ReadBasic.All dimulai dengan segala sesuatu yang dilakukan User.Read. Selain itu, Anda dapat mengakses nama tampilan, nama depan dan keluarga, alamat email, foto, dan ekstensi terbuka untuk pengguna organisasi lain. Rentang operasi tertentu memungkinkan aplikasi untuk memiliki UI pemilih orang yang baik dan merupakan contoh perancang API menggunakan izin untuk mengaktifkan berbagai operasi tertentu.

Mari kita lihat beberapa izin lagi pada objek pengguna Microsoft Graph:

Persetujuan Tampilkan String Deskripsi
User.Read.All Membaca profil lengkap semua pengguna Memungkinkan aplikasi membaca kumpulan lengkap properti profil, laporan, dan manajer pengguna lain di organisasi Anda, atas nama pengguna yang masuk.
User.ReadWrite.All Membaca dan menulis profil lengkap semua pengguna Memungkinkan aplikasi membaca dan menulis kumpulan lengkap properti profil, laporan, dan manajer pengguna lain di organisasi Anda, atas nama pengguna yang masuk. Juga memungkinkan aplikasi untuk membuat dan menghapus pengguna dan mengatur ulang kata sandi pengguna atas nama pengguna yang masuk.

Seperti halnya dengan User.Read dan User.ReadWrite, User.Read.All dan User.ReadWrite.All adalah izin yang berbeda yang memungkinkan aplikasi untuk mengikuti prinsip Zero Trust dengan hak istimewa paling sedikit.

User.Read.All menarik karena setiap pengguna dalam organisasi memiliki kemampuan ini (misalnya, membuka Outlook, naik dan turun rantai pelaporan). Anda, sebagai individu, dapat melihat profil pengguna lengkap setiap pengguna lain di organisasi Anda. Namun, perancang Microsoft Graph API memutuskan bahwa hanya admin yang harus mengizinkan aplikasi untuk melakukan operasi yang sama karena User.Read.All menyertakan hierarki organisasi penyewa. Jika pelaku jahat mengakses informasi ini, mereka dapat memasang serangan phishing yang ditargetkan di mana email phishing berasal dari manajer seseorang atau manajer manajer mereka.

User.ReadWrite.All adalah cakupan operasi yang kuat. Aplikasi dengan izin ini dapat memperbarui, atau bahkan menghapus, setiap pengguna di penyewa. Sebagai izin yang didelegasikan, saat pengguna berada di depan aplikasi, aplikasi hanya dapat melakukan apa yang dapat dilakukan pengguna saat ini. Pengguna reguler tidak dapat memperbarui atau menghapus pengguna lain terlepas dari izin aplikasi. Namun, ketika admin penyewa menggunakan aplikasi, mereka dapat melakukan operasi ini. Saat Anda memutuskan untuk memberikan atau menolak izin ini, evaluasi aplikasi Anda dengan mempertimbangkan pengguna admin tenant.

Mengingat kekuatan User.Read.All dan User.ReadWrite.All, perancang Microsoft Graph API menunjuk izin ini sebagai memerlukan persetujuan admin. Mari kita tambahkan kolom Admin? ke tabel izin kami untuk menunjukkan kapan izin memerlukan persetujuan admin:

Persetujuan Tampilkan String Deskripsi Admin?
User.Read Masuk dan membaca profil pengguna Memungkinkan pengguna untuk masuk ke aplikasi dan memungkinkan aplikasi membaca profil pengguna yang masuk. Ini juga memungkinkan aplikasi untuk membaca informasi perusahaan dasar pengguna yang masuk. No
User.ReadWrite Membaca dan menulis akses ke profil pengguna Memungkinkan aplikasi membaca profil lengkap pengguna yang masuk. Ini juga memungkinkan aplikasi untuk memperbarui informasi profil pengguna yang masuk atas nama mereka. No
User.ReadBasic.All Membaca profil dasar semua pengguna Memungkinkan aplikasi membaca sekumpulan properti profil dasar pengguna lain di organisasi Anda atas nama pengguna yang masuk. Termasuk nama tampilan, nama depan dan keluarga, alamat email, ekstensi terbuka, dan foto. Memungkinkan aplikasi membaca profil lengkap pengguna yang masuk. No
User.Read.All Membaca profil lengkap semua pengguna Memungkinkan aplikasi membaca kumpulan lengkap properti profil, laporan, dan manajer pengguna lain di organisasi Anda, atas nama pengguna yang masuk. Yes
User.ReadWrite.All Membaca dan menulis profil lengkap semua pengguna Memungkinkan aplikasi membaca dan menulis kumpulan lengkap properti profil, laporan, dan manajer pengguna lain di organisasi Anda, atas nama pengguna yang masuk. Juga memungkinkan aplikasi untuk membuat dan menghapus pengguna dan mengatur ulang kata sandi pengguna atas nama pengguna yang masuk. Yes

Seperti yang ditunjukkan dalam artikel Meminta izin yang memerlukan persetujuan administratif, administrator penyewa dapat mengabaikan persyaratan dan menetapkan setiap atau semua perizinan aplikasi di penyewa mereka sebagai memerlukan persetujuan admin. Desain aplikasi Anda untuk menangani dengan baik saat Anda tidak menerima token dari permintaan Anda. Kurangnya persetujuan adalah salah satu dari banyak alasan aplikasi Anda mungkin tidak menerima token.

Langkah berikutnya