Meminta izin melalui persetujuan
Aplikasi dalam platform identitas Microsoft mengandalkan persetujuan untuk mendapatkan akses ke sumber daya atau API yang diperlukan. Berbagai jenis persetujuan lebih baik untuk skenario aplikasi yang berbeda. Memilih pendekatan terbaik untuk menyetujui aplikasi Anda akan membantunya menjadi lebih sukses dengan pengguna dan organisasi.
Dalam artikel ini, Anda akan mempelajari tentang berbagai jenis persetujuan dan cara meminta izin untuk aplikasi Anda melalui persetujuan.
Persetujuan pengguna statis
Dalam skenario persetujuan pengguna statis, Anda harus menentukan semua izin yang dibutuhkan dalam konfigurasi aplikasi di pusat admin Microsoft Entra. Jika pengguna (atau administrator, sebagaimana mestinya) belum memberikan persetujuan untuk aplikasi ini, maka platform identitas Microsoft akan meminta pengguna untuk memberikan persetujuan saat ini.
Izin statis juga memungkinkan administrator untuk menyetujui atas nama semua pengguna di organisasi.
Meskipun mengandalkan persetujuan statis dan daftar izin tunggal menjaga kode tetap bagus dan sederhana, itu juga berarti bahwa aplikasi Anda akan meminta semua izin yang mungkin diperlukan di muka. Ini dapat mencegah pengguna dan admin menyetujui permintaan akses aplikasi Anda.
Persetujuan pengguna tambahan dan dinamis
Dengan titik akhir platform identitas Microsoft, Anda dapat mengabaikan izin statis yang ditentukan dalam informasi pendaftaran aplikasi di pusat admin Microsoft Entra. Sebagai gantinya, Anda dapat meminta izin secara bertahap. Anda dapat meminta serangkaian izin minimum di muka dan meminta lebih banyak dari waktu ke waktu karena pelanggan menggunakan fitur aplikasi tambahan. Untuk melakukannya, Anda dapat menentukan cakupan yang dibutuhkan aplikasi Anda kapan saja dengan menyertakan cakupan baru dalam scope
parameter saat meminta token akses - tanpa perlu menentukannya sebelumnya dalam informasi pendaftaran aplikasi. Jika pengguna belum menyetujui cakupan baru yang ditambahkan ke permintaan, mereka akan diminta untuk hanya menyetujui izin baru. Persetujuan bertahap, atau dinamis, hanya berlaku untuk izin yang didelegasikan dan bukan untuk izin aplikasi.
Mengizinkan aplikasi meminta izin secara dinamis melalui scope
parameter memberi pengembang kontrol penuh atas pengalaman pengguna Anda. Anda juga dapat memuat pengalaman persetujuan Anda di depan dan meminta semua izin dalam satu permintaan otorisasi awal. Jika aplikasi Anda memerlukan sejumlah besar izin, Anda dapat mengumpulkan izin tersebut dari pengguna secara bertahap saat mereka mencoba menggunakan fitur tertentu dari aplikasi dari waktu ke waktu.
Penting
Persetujuan dinamis dapat memberi kenyamanan, tetapi menghadirkan tantangan besar untuk izin yang memerlukan persetujuan admin. Pengalaman persetujuan admin di panel Pendaftaran aplikasi dan Aplikasi enterprise di portal tidak mengetahui tentang izin dinamis tersebut pada waktu persetujuan. Sebaiknya pengembang mencantumkan semua izin istimewa admin yang diperlukan oleh aplikasi di portal. Hal ini memungkinkan admin penyewa untuk menyetujui atas nama semua pengguna mereka di portal, satu kali. Pengguna tidak perlu melalui pengalaman persetujuan untuk izin tersebut saat masuk. Alternatifnya adalah menggunakan persetujuan dinamis untuk izin tersebut. Untuk memberikan persetujuan kepada admin, masing-masing admin masuk ke aplikasi, memicu permintaan persetujuan untuk izin yang sesuai, dan memilih persetujuan untuk seluruh organisasi saya dalam dialog persetujuan.
Meminta persetujuan pengguna individual
Dalam permintaan otorisasi OpenID Koneksi atau OAuth 2.0, aplikasi dapat meminta izin yang dibutuhkan dengan menggunakan scope
parameter kueri. Misalnya, saat pengguna masuk ke aplikasi, aplikasi mengirimkan permintaan seperti contoh berikut. (Hentian baris ditambahkan untuk legibilitas).
GET https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=
https%3A%2F%2Fgraph.microsoft.com%2Fcalendars.read%20
https%3A%2F%2Fgraph.microsoft.com%2Fmail.send
&state=12345
Parameter scope
adalah daftar izin yang didelegasikan yang dipisahkan spasi yang diminta aplikasi. Setiap izin ditunjukkan dengan menambahkan nilai izin ke pengidentifikasi sumber daya (ID aplikasi URI). Dalam contoh permintaan, aplikasi memerlukan izin untuk membaca kalender pengguna dan mengirim email sebagai pengguna.
Setelah pengguna memasukkan kredensial mereka, platform identitas Microsoft memeriksa catatan persetujuan pengguna yang cocok. Jika pengguna belum menyetujui salah satu izin yang diminta di masa lalu, dan jika administrator belum menyetujui izin ini atas nama seluruh organisasi, platform identitas Microsoft meminta pengguna untuk memberikan izin yang diminta.
Dalam contoh berikut, offline_access
izin ("Pertahankan akses ke data yang telah Anda berikan aksesnya") dan User.Read
("Masuk dan baca profil Anda") secara otomatis disertakan dalam persetujuan awal untuk aplikasi. Izin ini diperlukan untuk fungsionalitas aplikasi yang tepat. Izin ini offline_access
memberi aplikasi akses ke token refresh yang penting untuk aplikasi asli dan aplikasi web. Izin User.Read
memberikan akses ke klaim sub
. Ini memungkinkan klien atau aplikasi untuk mengidentifikasi pengguna dengan benar dari waktu ke waktu dan mengakses informasi pengguna yang belum diketahui.
Saat pengguna menyetujui permintaan izin, persetujuan akan direkam. Pengguna tidak harus menyetujui lagi ketika mereka kemudian masuk ke aplikasi.
Meminta persetujuan untuk seluruh penyewa melalui persetujuan admin
Meminta persetujuan untuk seluruh penyewa memerlukan persetujuan admin. Persetujuan admin yang dilakukan atas nama organisasi memerlukan izin statis yang terdaftar untuk aplikasi. Atur izin tersebut di portal pendaftaran aplikasi jika Anda memerlukan admin untuk memberikan persetujuan atas nama seluruh organisasi.
Persetujuan Admin untuk Izin yang Didelegasikan
Saat aplikasi Anda meminta izin yang didelegasikan yang memerlukan persetujuan admin, pengguna menerima pesan kesalahan yang mengatakan bahwa mereka tidak sah untuk menyetujui izin aplikasi Anda. Pengguna diharuskan meminta akses ke aplikasi kepada admin mereka. Jika admin memberikan persetujuan untuk seluruh penyewa, pengguna organisasi tidak melihat halaman persetujuan untuk aplikasi kecuali izin yang diberikan sebelumnya dicabut atau aplikasi meminta izin baru secara bertahap.
Administrator yang menggunakan aplikasi yang sama akan melihat permintaan persetujuan admin. Perintah persetujuan admin menyediakan kotak centang yang memungkinkan mereka memberikan akses aplikasi ke data yang diminta atas nama pengguna untuk seluruh penyewa. Untuk informasi selengkapnya tentang pengalaman persetujuan pengguna dan admin, lihat Pengalaman persetujuan aplikasi.
Contoh izin yang didelegasikan untuk Microsoft Graph yang memerlukan persetujuan admin adalah:
- Membaca profil lengkap semua pengguna menggunakan User.Read.All
- Menulis data ke direktori organisasi menggunakan Directory.ReadWrite.All
- Membaca data di direktori organisasi menggunakan Groups.Read.All
Untuk melihat daftar lengkap izin Microsoft graph, lihat Referensi izin Microsoft graph.
Anda juga dapat mengonfigurasi izin pada sumber daya Anda sendiri untuk memerlukan persetujuan admin. Untuk informasi selengkapnya tentang cara menambahkan cakupan yang memerlukan persetujuan admin, lihat Menambahkan cakupan yang memerlukan persetujuan admin.
Beberapa organisasi dapat mengubah kebijakan persetujuan pengguna default untuk penyewa. Saat aplikasi Anda meminta akses ke izin, aplikasi tersebut dievaluasi terhadap kebijakan ini. Pengguna mungkin perlu meminta persetujuan admin bahkan ketika tidak diperlukan secara default. Untuk mempelajari cara administrator mengelola kebijakan persetujuan untuk aplikasi, lihat Mengelola kebijakan persetujuan aplikasi.
Catatan
Dalam permintaan ke titik akhir otorisasi, token, atau persetujuan untuk platform identitas Microsoft, jika pengidentifikasi sumber daya dihilangkan dalam parameter cakupan, sumber daya diasumsikan sebagai Microsoft Graph. Misalnya, scope=User.Read setara dengan https://graph.microsoft.com/User.Read
.
Persetujuan Admin untuk izin Aplikasi
Izin aplikasi selalu memerlukan persetujuan admin. Izin aplikasi tidak memiliki konteks pengguna dan pemberian persetujuan tidak dilakukan atas nama pengguna tertentu. Sebaliknya, aplikasi klien diberikan izin secara langsung, jenis izin ini hanya digunakan oleh layanan daemon dan aplikasi non-interaktif lainnya yang berjalan di latar belakang. Administrator perlu mengonfigurasi izin di muka dan memberikan persetujuan admin melalui pusat admin Microsoft Entra.
Persetujuan admin untuk aplikasi Multi-penyewa
Jika aplikasi yang meminta izin adalah aplikasi multi-penyewa, pendaftaran aplikasinya hanya ada di penyewa tempat aplikasi dibuat, oleh karena itu izin tidak dapat dikonfigurasi di penyewa lokal. Jika aplikasi meminta izin yang memerlukan persetujuan admin, administrator perlu menyetujui atas nama pengguna. Untuk menyetujui izin ini, administrator perlu masuk ke aplikasi itu sendiri, sehingga pengalaman masuk persetujuan admin dipicu. Untuk mempelajari cara menyiapkan pengalaman persetujuan admin untuk aplikasi multi-penyewa, lihat Mengaktifkan masuk multi-penyewa
Administrator dapat memberikan persetujuan untuk aplikasi dengan opsi berikut.
Disarankan: Memasukkan pengguna ke aplikasi Anda
Biasanya, saat Anda membuat aplikasi yang memerlukan persetujuan admin, aplikasi memerlukan halaman atau tampilan di mana admin dapat menyetujui izin aplikasi. Halaman ini bisa:
- Bagian dari alur pendaftaran aplikasi.
- Bagian dari pengaturan aplikasi.
- Aliran "sambungkan" khusus.
Dalam banyak kasus, masuk akal bagi aplikasi untuk menampilkan tampilan "sambungkan" hanya setelah pengguna masuk dengan akun Microsoft kantor atau akun Microsoft sekolah.
Saat memasukkan pengguna ke aplikasi, Anda dapat mengidentifikasi organisasi tempat admin berada sebelum meminta mereka menyetujui izin yang diperlukan. Meskipun tidak terlalu diperlukan, ini dapat membantu Anda menciptakan pengalaman yang lebih intuitif bagi pengguna organisasi Anda.
Untuk memasukkan pengguna, ikuti Tutorial protokol platform identitas Microsoft.
Meminta izin di portal pendaftaran aplikasi
Di portal pendaftaran aplikasi, aplikasi dapat mencantumkan izin yang mereka butuhkan, termasuk izin yang didelegasikan dan izin aplikasi. Penyiapan ini memungkinkan penggunaan .default
cakupan dan opsi Izinkan admin pusat admin Microsoft Entra.
Secara umum, izin harus didefinisikan secara statis untuk aplikasi tertentu. Mereka harus menjadi superset dari izin yang akan diminta aplikasi secara dinamis atau bertahap.
Catatan
Izin aplikasi hanya dapat diminta melalui penggunaan .default
. Jadi, jika aplikasi Anda memerlukan izin aplikasi, pastikan aplikasi tersebut tercantum di portal pendaftaran aplikasi.
Untuk mengonfigurasi daftar izin yang diminta secara statis untuk aplikasi:
- Masuk ke pusat admin Microsoft Entra sebagai setidaknya Administrator Aplikasi Cloud.
- Telusuri aplikasi >Identitas>Pendaftaran aplikasi> Semua aplikasi.
- Pilih aplikasi, atau buat aplikasi jika Anda belum melakukannya.
- Pada halaman Gambaran Umum aplikasi, di bawah Kelola, pilih Izin API>Tambahkan izin.
- Pilih Microsoft Graph dari daftar API yang tersedia. Kemudian tambahkan izin yang diperlukan aplikasi Anda.
- Pilih Tambahkan izin.
Respons berhasil
Jika admin menyetujui izin untuk aplikasi Anda, respons yang berhasil akan terlihat seperti ini:
GET http://localhost/myapp/permissions?tenant=aaaabbbb-0000-cccc-1111-dddd2222eeee&state=state=12345&admin_consent=True
Parameter | Deskripsi |
---|---|
tenant |
Penyewa direktori yang memberi izin yang diminta aplikasi Anda, dalam format GUID. |
state |
Nilai yang disertakan dalam permintaan juga akan dikembalikan dalam respons token. Ini bisa berupa string dari konten apa pun yang Anda inginkan. Status digunakan untuk mengodekan informasi tentang status pengguna dalam aplikasi sebelum permintaan autentikasi terjadi, seperti halaman atau tampilan tempat mereka berada. |
admin_consent |
Akan diatur ke True . |
Setelah Anda menerima respons yang berhasil dari titik akhir persetujuan admin, aplikasi Anda telah mendapatkan izin yang dimintanya. Selanjutnya, Anda dapat meminta token untuk sumber daya yang Anda inginkan.
Respons kesalahan
Jika admin tidak menyetujui izin untuk aplikasi Anda, respons yang gagal terlihat seperti ini:
GET http://localhost/myapp/permissions?error=permission_denied&error_description=The+admin+canceled+the+request
Parameter | Deskripsi |
---|---|
error |
String kode kesalahan yang dapat digunakan untuk mengklasifikasikan jenis kesalahan yang terjadi. Ini juga dapat digunakan untuk bereaksi terhadap kesalahan. |
error_description |
Pesan kesalahan khusus yang dapat membantu Anda mengidentifikasi penyebab kesalahan autentikasi. |
Menggunakan izin setelah persetujuan
Setelah pengguna menyetujui izin untuk aplikasi Anda, aplikasi Anda dapat memperoleh token akses yang mewakili izin aplikasi untuk mengakses sumber daya dalam beberapa kapasitas. Token akses hanya dapat digunakan untuk satu sumber daya. Tetapi dikodekan di dalam token akses adalah setiap izin yang telah diberikan aplikasi Anda untuk sumber daya tersebut. Untuk memperoleh token akses, aplikasi Anda dapat membuat permintaan ke titik akhir token platform identitas Microsoft, seperti ini:
POST common/oauth2/v2.0/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/json
{
"grant_type": "authorization_code",
"client_id": "00001111-aaaa-2222-bbbb-3333cccc4444",
"scope": "https://microsoft.graph.com/Mail.Read https://microsoft.graph.com/mail.send",
"code": "AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...",
"redirect_uri": "https://localhost/myapp",
"client_secret": "A1bC2dE3f..." // NOTE: Only required for web apps
}
Anda dapat menggunakan token akses yang dihasilkan dalam permintaan HTTP ke sumber daya. Ini dengan andal menunjukkan kepada sumber daya bahwa aplikasi Anda memiliki izin yang tepat untuk melakukan tugas tertentu.
Untuk informasi selengkapnya tentang protokol OAuth 2.0 dan cara mendapatkan token akses, lihat referensi protokol endpoint platform identitas Microsoft.