Pengantar izin dan persetujuan

Untuk mengakses sumber daya yang dilindungi seperti email atau data kalender, aplikasi Anda memerlukan otorisasi pemilik sumber daya. Pemilik sumber daya dapat menyetujui atau menolak permintaan aplikasi Anda. Memahami konsep dasar ini akan membantu Anda membangun aplikasi yang lebih aman dan tepercaya yang hanya meminta akses yang dibutuhkan, saat aplikasi membutuhkannya, dari pengguna dan administrator aplikasi.

Skenario akses

Sebagai pengembang aplikasi, Anda harus mengidentifikasi cara aplikasi Anda akan mengakses data. Aplikasi dapat menggunakan akses yang didelegasikan, bertindak atas nama pengguna yang masuk, atau akses khusus aplikasi, hanya bertindak sebagai identitas aplikasi itu sendiri.

Gambar memperlihatkan ilustrasi skenario akses.

Akses yang didelegasikan (akses atas nama pengguna)

Dalam skenario akses ini, pengguna telah masuk ke aplikasi klien. Aplikasi klien mengakses sumber daya atas nama pengguna. Akses yang didelegasikan memerlukan izin yang didelegasikan. Baik klien dan pengguna harus diotorisasi secara terpisah untuk membuat permintaan. Untuk informasi selengkapnya tentang skenario akses yang didelegasikan, lihat skenario akses yang didelegasikan.

Untuk aplikasi klien, izin yang didelegasikan dengan benar harus diberikan. Izin yang didelegasikan juga dapat disebut sebagai cakupan. Cakupan adalah izin untuk sumber daya tertentu yang mewakili apa yang dapat diakses aplikasi klien atas nama pengguna. Untuk informasi selengkapnya tentang cakupan, lihat cakupan dan izin.

Untuk pengguna, otorisasi bergantung pada hak istimewa yang telah diberikan pengguna untuk mengakses sumber daya. Misalnya, pengguna dapat diberi wewenang untuk mengakses sumber daya direktori oleh kontrol akses berbasis peran (RBAC) Azure Active Directory (Azure AD) atau untuk mengakses sumber daya email dan kalender dengan Exchange Online RBAC. Untuk informasi selengkapnya tentang RBAC untuk aplikasi, lihat RBAC untuk aplikasi.

Akses khusus aplikasi (Akses tanpa pengguna)

Dalam skenario akses ini, aplikasi bertindak sendiri tanpa ada pengguna yang masuk. Akses aplikasi digunakan dalam skenario seperti otomatisasi, dan pencadangan. Skenario ini mencakup aplikasi yang berjalan sebagai layanan latar belakang atau daemon. Skenario ini cocok digunakan ketika tidak diinginkan untuk memiliki pengguna tertentu yang masuk, atau ketika data yang diperlukan tidak dapat dicakup untuk satu pengguna.

Akses khusus aplikasi menggunakan peran aplikasi alih-alih cakupan yang didelegasikan. Ketika diberikan melalui persetujuan, peran aplikasi juga dapat disebut izin aplikasi. Untuk akses khusus aplikasi, aplikasi klien harus diberikan peran aplikasi yang sesuai dari aplikasi sumber daya yang dipanggilnya untuk mengakses data yang diminta. Untuk informasi selengkapnya tentang menetapkan peran aplikasi ke aplikasi klien, lihat Menetapkan peran aplikasi ke aplikasi.

Jenis izin

Izin yang didelegasikan digunakan dalam skenario akses yang didelegasikan. Izin yang didelegasikan adalah izin yang memungkinkan aplikasi bertindak atas nama pengguna. Aplikasi tidak akan pernah dapat mengakses apa pun yang tidak dapat diakses oleh pengguna yang masuk sendiri.

Misalnya, bayangkan aplikasi yang telah diberikan izin Files.Read.All yang didelegasikan atas nama Tom, yang merupakan pengguna aplikasi. Aplikasi hanya akan dapat membaca file yang dapat diakses oleh Tom secara pribadi.

Izin aplikasi, terkadang disebut peran aplikasi digunakan dalam skenario akses khusus aplikasi, tanpa ada pengguna yang masuk. Aplikasi akan dapat mengakses data apa pun yang terkait dengan izin tersebut. Misalnya, aplikasi yang diberikan izin aplikasi Files.Read.All akan dapat membaca file apa pun di penyewa. Hanya administrator atau pemilik perwakilan layanan yang dapat menyetujui izin aplikasi.

Ada cara lain di mana aplikasi dapat diberikan otorisasi untuk akses khusus aplikasi. Misalnya, aplikasi dapat diberi peran RBAC Azure Active Directory.

Perbandingan izin yang didelegasikan dan izin aplikasi

Izin yang didelegasikan Izin aplikasi
Jenis aplikasi Web / Seluler / aplikasi satu halaman (SPA) Web / Daemon
Konteks akses Mendapatkan akses atas nama pengguna Mendapatkan akses tanpa pengguna
Siapa yang dapat menyetujui - Pengguna dapat menyetujui data mereka
- Admin dapat menyetujui semua pengguna
Hanya admin yang dapat menyetujui
Nama lain -Cakupan
- Cakupan izin OAuth2
- Peran aplikasi
- Izin khusus aplikasi
Hasil persetujuan (khusus untuk Microsoft Graph) oAuth2PermissionGrant appRoleAssignment

Salah satu cara agar aplikasi diberikan izin adalah melalui persetujuan. Persetujuan adalah proses saat pengguna atau admin mengotorisasi aplikasi untuk mengakses sumber daya yang dilindungi. Misalnya, saat pengguna mencoba masuk ke aplikasi untuk pertama kalinya, aplikasi dapat meminta izin untuk melihat profil pengguna dan membaca konten kotak surat pengguna. Pengguna melihat daftar izin yang diminta aplikasi melalui permintaan persetujuan. Skenario lain di mana pengguna mungkin melihat permintaan persetujuan meliputi:

  • Ketika persetujuan yang diberikan sebelumnya dicabut.
  • Ketika aplikasi dikodekan untuk secara khusus meminta persetujuan selama setiap masuk.
  • Ketika aplikasi menggunakan persetujuan inkremental atau dinamis untuk meminta beberapa izin di muka dan lebih banyak izin nanti sesuai kebutuhan.

Detail utama dari permintaan persetujuan adalah daftar izin yang diperlukan aplikasi dan informasi penerbit. Untuk informasi selengkapnya tentang permintaan persetujuan dan pengalaman persetujuan untuk admin dan pengguna akhir, lihat pengalaman persetujuan aplikasi.

Persetujuan pengguna terjadi saat pengguna mencoba masuk ke aplikasi. Pengguna memberikan kredensial masuk mereka. Kredensial ini diperiksa untuk menentukan apakah persetujuan telah diberikan. Jika tidak ada catatan persetujuan pengguna atau admin sebelumnya untuk izin yang diperlukan, pengguna akan diperlihatkan permintaan persetujuan, dan diminta untuk memberikan izin yang diminta kepada aplikasi. Dalam banyak kasus, admin mungkin diminta untuk memberikan persetujuan atas nama pengguna.

Tergantung pada izin yang mereka butuhkan, beberapa aplikasi mungkin memerlukan administrator untuk menjadi orang yang memberikan persetujuan. Misalnya, izin aplikasi dan banyak izin yang didelegasikan hak istimewa tinggi hanya dapat disetujui oleh administrator. Administrator dapat memberikan persetujuan untuk diri mereka sendiri atau untuk seluruh organisasi. Untuk informasi selengkapnya tentang persetujuan pengguna dan admin, lihat gambaran umum persetujuan pengguna dan admin.

Praotorisasi

Praotorisasi memungkinkan pemilik aplikasi sumber daya memberikan persetujuan tanpa mengharuskan pengguna melihat permintaan persetujuan untuk kumpulan izin yang sama yang telah diotorisasi sebelumnya. Dengan cara ini, aplikasi yang telah diotorisasi sebelumnya tidak akan meminta pengguna untuk menyetujui izin. Pemilik sumber daya dapat melakukan praotorisasi aplikasi klien di portal Microsoft Azure atau dengan menggunakan PowerShell dan API, seperti Microsoft Graph.

Langkah berikutnya