Bagikan melalui


Mengonfigurasi klaim grup dan peran aplikasi dalam token

Artikel ini membantu Anda mengonfigurasi aplikasi dengan definisi peran aplikasi dan menetapkan grup keamanan ke peran aplikasi sehingga Anda dapat meningkatkan fleksibilitas dan kontrol sambil meningkatkan keamanan aplikasi dengan hak istimewa paling sedikit.

Microsoft Entra ID mendukung pengiriman grup keamanan yang ditugaskan kepada pengguna, peran direktori Microsoft Entra, dan grup distribusi sebagai klaim dalam token. Anda dapat menggunakan pendekatan ini untuk mendorong otorisasi di aplikasi. Namun, ID Microsoft Entra membatasi dukungan grup dalam token berdasarkan ukuran token. Ketika pengguna adalah anggota dari terlalu banyak grup, tidak ada grup dalam token.

Dalam artikel ini, Anda mempelajari pendekatan alternatif untuk mendapatkan informasi pengguna dalam token menggunakan dukungan grup Microsoft Entra. Sebagai gantinya, Anda mengonfigurasi aplikasi dengan definisi peran aplikasi dan menetapkan grup ke peran aplikasi. Praktik terbaik pengembang Zero Trust meningkatkan fleksibilitas dan kontrol sambil meningkatkan keamanan aplikasi dengan hak istimewa paling sedikit.

Anda dapat mengonfigurasi klaim grup dalam token yang dapat Anda gunakan dalam aplikasi Anda guna otorisasi. Ingat bahwa informasi grup dalam token hanya terkini ketika Anda menerima token. Klaim grup mendukung dua pola utama:

  • Grup yang diidentifikasi oleh atribut pengidentifikasi objek Microsoft Entra (OID) mereka.
  • Grup yang diidentifikasi oleh atribut sAMAccountName atau GroupSID untuk grup dan pengguna yang disinkronkan Direktori Aktif.

Keanggotaan grup dapat mendorong keputusan otorisasi. Misalnya, contoh berikut menunjukkan beberapa klaim dalam token. Anda dapat menambahkan klaim dan peran grup ke ID atau token akses.

"aud": "00001111-aaaa-2222-bbbb-3333cccc4444", 
"iss": "https://login.microsoftonline.com/833ced3d-cb2e-41de-92f1-29e2af035ddc/v2.0", 
"iat": 1669657224, "nbf": 1669657224, "exp": 1669661124, 
"groups": [ 
   "0760b6cf-170e-4a14-91b3-4b78e0739963", 
   "3b2b0c93-acd8-4208-8eba-7a48db1cd4c0" 
 ],
"oid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"sub": "3OBtLXUC2ZrN_ADLNjW9X4o0lcd61py7lgHw3Skh77s",
"tid": "bbbbcccc-1111-dddd-2222-eeee3333ffff", 
"ver": "2.0", 
"wids": [ 
   "cf1c38e5-3621-4004-a7cb-879624dced7c", 
   "b79fbf4d-3ef9-4689-8143-76b194e85509" 
 ]

Array klaim groups terdiri dari ID grup yang pengguna ini menjadi anggota. Array wids terdiri dari ID peran Microsoft Entra yang ditetapkan untuk pengguna ini. Di sini, cf1c38e5-3621-4004-a7cb-879624dced7c menunjukkan bahwa peran yang ditetapkan pengguna ini termasuk Pengembang Aplikasi dan anggota standar seperti yang ditunjukkan 3b2b0c93-acd8-4208-8eba-7a48db1cd4c0.

Aplikasi Anda dapat membuat keputusan otorisasi berdasarkan keberadaan atau tidak adanya klaim ini dan nilainya. Lihat peran bawaan Microsoft Entra untuk daftar nilai untuk klaim wids.

Untuk menambahkan klaim groups dan wids ke token Anda, pilih Semua grup seperti yang ditunjukkan dalam contoh Pendaftaran Aplikasi berikut | Konfigurasi Token | Klaim Opsional | layar Edit klaim grup.

Cuplikan layar Edit klaim grup memperlihatkan jenis grup yang dipilih: Grup yang ditetapkan ke aplikasi.

Kelebihan grup

Saat Anda meminta semua grup dalam token seperti yang ditunjukkan dalam contoh, Anda tidak bisa mengandalkan klaim groups akan ada dalam token Anda. Ada batas ukuran pada token dan pada klaim groups sehingga tidak menjadi terlalu besar. Saat pengguna adalah anggota dari terlalu banyak grup, aplikasi Anda perlu mendapatkan keanggotaan grup pengguna dari Microsoft Graph. Batasan untuk grup dalam klaim groups adalah:

  • 200 grup untuk token web JSON (JWT).
  • 150 kelompok untuk token Security Assertion Markup Language (SAML).
  • Enam grup saat menggunakan alur implisit (misalnya, menggunakan inti ASP.NET yang mendapatkan token ID melalui bagian aliran implisit dari aliran hibrid).
    • Alur implisit tidak lagi direkomendasikan untuk aplikasi web satu halaman.
    • Alur implisit hanya dapat digunakan di aplikasi web untuk token ID, tidak pernah token akses, dalam alur hibrid OAuth2.

Jika Anda menggunakan OpenID Connect atau OAuth2, Anda dapat memiliki hingga 200 grup dalam token Anda. Jika Anda menggunakan SAML, Anda hanya dapat memiliki 150 grup karena token SAML lebih besar dari token OAuth2 dan OpenID Connect. Jika Anda menggunakan alur implisit, batasnya adalah enam karena respons tersebut muncul di URL. Dalam semua kasus ini, alih-alih memiliki klaim groups, Anda melihat indikasi (dikenal sebagai kelebihan kelompok) yang memberi tahu Anda bahwa pengguna adalah anggota dari terlalu banyak grup untuk dimasukkan dalam token Anda.

Indikasi kelebihan aliran implisit dilakukan dengan klaim hasgroups alih-alih klaim groups.

Untuk memastikan otorisasi yang tepat menggunakan keanggotaan grup, minta aplikasi Anda memeriksa klaim groups. Jika ada, gunakan klaim tersebut untuk menentukan keanggotaan grup pengguna. Jika tidak ada klaim groups, periksa keberadaan klaim hasgroups atau klaim _claim_names dengan anggota array groups. Jika salah satu klaim ini ada, pengguna adalah anggota dari terlalu banyak grup untuk token. Dalam hal ini, aplikasi Anda harus menggunakan Microsoft Graph untuk menentukan keanggotaan grup bagi pengguna. Lihat Mencantumkan keanggotaan pengguna (langsung dan transitif) untuk menemukan semua grup, baik langsung maupun transitif, di mana pengguna adalah anggota.

Jika aplikasi Anda memerlukan informasi keanggotaan grup real time, gunakan Microsoft Graph untuk menentukan keanggotaan grup. Ingatlah bahwa informasi dalam token yang Anda terima hanya terbaru pada saat Anda memperoleh token.

Lihat contoh pendaftaran Aplikasi berikut | konfigurasi Token | Klaim opsional | layar klaim Edit grup. Salah satu cara untuk menghindari mengajukan klaim kelebihan grup adalah dengan memilih Grup yang ditetapkan ke aplikasi pada layar Edit klaim grup alih-alih Semua grup.

Cuplikan layar Edit klaim grup memperlihatkan jenis grup yang dipilih: Grup keamanan, peran Direktori, dan Semua grup.

Saat Anda memilih Grup yang ditetapkan ke aplikasi, grup disertakan dalam klaim groups jika kondisi berikut ini benar:

Pada publikasi artikel ini, grup yang ditetapkan ke opsi aplikasi tidak mendukung keanggotaan secara tidak langsung. Tugas kelompok memerlukan setidaknya lisensi tingkat P1. Penyewa gratis tidak dapat menetapkan grup ke aplikasi.

Peran grup dan aplikasi

Cara lain untuk menghindari masalah kelebihan penggunaan grup adalah dengan aplikasi untuk menentukan peran aplikasi yang memungkinkan pengguna dan grup sebagai jenis anggota. Seperti yang ditunjukkan dalam contoh pendaftaran aplikasi berikut | Peran aplikasi | layar Membuat peran aplikasi, pilih Pengguna/Grup untuk jenis anggota Diizinkan.

Cuplikan layar Buat peran aplikasi memperlihatkan Jenis anggota yang diizinkan: Pengguna/Grup.

Setelah membuat peran aplikasi dalam pendaftaran aplikasi, Anda dapat menetapkan pengguna dan grup ke peran tersebut. Aplikasi Anda memperoleh klaim roles dalam token Anda (ID token untuk aplikasi, token akses untuk API) yang mencakup semua peran yang diberikan kepada pengguna yang sudah masuk, seperti yang ditunjukkan dalam contoh token berikut.

"aud": "11112222-bbbb-3333-cccc-4444dddd5555",
"iss": "https://login.microsoftonline.com/833ced3d-cb2e-41de-92f1-29e2af035ddc/v2.0",
"iat": 1670826509, "nbf": 1670826509, "exp": 1670830409,
"name": "Kyle Marsh",
"oid": "bbbbbbbb-1111-2222-3333-cccccccccccc",
"preferred_username": "kylemar@idfordevs.dev",
"roles": [
 "Approver",
 "Reviewer" 
],
"sub": "dx-4lf-0loB3c3uVrULnZ2VTLuRRWYff0q7-QlIfYU4",
"tid": "ccccdddd-2222-eeee-3333-ffff4444aaaa",

Ingatlah agar aplikasi Anda menangani kondisi berikut:

  • tidak adanya klaim roles
  • pengguna tidak memiliki penetapan peran
  • beberapa nilai dalam klaim roles saat pengguna memiliki lebih dari satu penetapan peran

Saat Anda membuat peran aplikasi yang memungkinkan pengguna dan grup sebagai anggota, selalu tentukan peran pengguna dasar tanpa peran otorisasi yang ditingkatkan. Saat konfigurasi Aplikasi Perusahaan memerlukan penugasan, hanya pengguna dengan penugasan langsung ke aplikasi atau keanggotaan dalam grup yang ditetapkan ke aplikasi yang dapat menggunakan aplikasi.

Jika aplikasi Anda menyertakan peran aplikasi yang ditentukan yang memungkinkan pengguna dan grup sebagai anggota, saat pengguna atau grup ditetapkan ke aplikasi, salah satu peran aplikasi yang ditentukan harus menjadi bagian dari penugasan pengguna atau grup ke aplikasi. Jika aplikasi Anda hanya menyertakan peran tinggi yang telah ditentukan sebelumnya (seperti admin) untuk aplikasi, semua pengguna dan grup diberi peran admin. Saat Anda menentukan peran dasar (seperti user), pengguna dan grup yang ditetapkan ke aplikasi dapat diberi peran pengguna dasar.

Selain menghindari klaim kelebihan jumlah grup, keuntungan lain dari menggunakan peran adalah tidak perlu memetakan antara ID grup atau nama dan apa artinya dalam aplikasi Anda. Misalnya, kode Anda dapat mencari klaim peran admin alih-alih melakukan iterasi melalui grup dalam klaim groups dan memutuskan ID grup mana yang harus diizinkan fungsionalitas admin.

Memverifikasi dan menggunakan peran dalam kode Anda

Saat Anda menentukan peran aplikasi untuk aplikasi, Anda bertanggung jawab untuk menerapkan logika otorisasi untuk peran tersebut. Untuk mempelajari cara menerapkan logika otorisasi di aplikasi Anda, lihat Menerapkan kontrol akses berbasis peran dalam aplikasi.

Langkah berikutnya