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 ditetapkan 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 ini 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 untuk otorisasi. Ingat bahwa informasi grup dalam token saat ini hanya saat Anda menerima token. Klaim grup mendukung dua pola utama:

  • Grup yang diidentifikasi oleh atribut pengidentifikasi objek Microsoft Entra (OID) mereka.
  • Grup yang diidentifikasi oleh sAMAccountName atribut 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": "e18c04b1-4868-4b93-93d1-8d71f17ab99b", 
"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": "cb7eda1b-d09a-40ae-b8bb-37836ebc6abd",
"sub": "3OBtLXUC2ZrN_ADLNjW9X4o0lcd61py7lgHw3Skh77s",
"tid": "833ced3d-cb2e-41ce-92f1-29e2af035ddc", 
"ver": "2.0", 
"wids": [ 
   "cf1c38e5-3621-4004-a7cb-879624dced7c", 
   "b79fbf4d-3ef9-4689-8143-76b194e85509" 
 ]

Array groups klaim terdiri dari ID grup tempat pengguna ini adalah 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 3b2b0c93-acd8-4208-8eba-7a48db1cd4c0 yang ditunjukkan.

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 groups klaim dan wids ke token Anda, pilih Semua grup seperti yang ditunjukkan dalam contoh konfigurasi Pendaftaran aplikasi | Token | Klaim opsional Edit klaim | grup.

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

Kelebihan grup

Saat meminta semua grup dalam token seperti yang ditunjukkan dalam contoh di atas, Anda tidak dapat mengandalkan token yang groups memiliki klaim dalam token Anda. Ada batas ukuran pada token dan groups klaim 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 groups klaim adalah:

  • 200 grup untuk token web JSON (JWT).
  • 150 grup 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 Koneksi 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 Koneksi OAuth2 dan OpenID. Jika Anda menggunakan alur implisit, batasnya adalah enam karena respons tersebut muncul di URL. Dalam semua kasus ini, alih-alih memiliki groups klaim, Anda melihat indikasi (dikenal sebagai kelebihan grup) yang memberi tahu Anda bahwa pengguna adalah anggota dari terlalu banyak grup yang sesuai dengan token Anda.

Dalam contoh token berikut, untuk koneksi OpenID, atau OAuth2, token web JSON (JWT), tidak groups ada klaim jika pengguna adalah anggota dari terlalu banyak grup. Sebaliknya, ada _claim_names klaim yang berisi groups anggota array.

Cuplikan layar contoh token memperlihatkan kueri.

Dalam contoh token di atas, Anda melihat bahwa groups klaim seharusnya dipetakan ke src1. Secara teori, Anda kemudian akan mencari klaim kemudian _claim_sources menemukan src1 anggota. Dari sana, Anda akan menemukan kueri Graph yang akan Anda gunakan untuk mendapatkan keanggotaan grup. Namun, ada masalah dengan apa yang Anda lihat dalam contoh kueri Graph. Ini masuk ke Azure AD Graph (yang tidak digunakan lagi oleh Microsoft), jadi jangan gunakan.

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

Untuk memastikan otorisasi yang tepat menggunakan keanggotaan grup, minta aplikasi Anda memeriksa klaim tersebut groups . Jika ada, gunakan klaim tersebut untuk menentukan keanggotaan grup pengguna. Jika tidak groups ada klaim, periksa keberadaan hasgroups klaim atau _claim_names klaim dengan groups anggota array. 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 konfigurasi Pendaftaran aplikasi | Token | berikut Layar klaim Edit | grup Opsional. Salah satu cara untuk menghindari mencapai 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 groups klaim jika kondisi berikut ini benar:

Pada publikasi artikel ini, opsi Grup yang ditetapkan ke aplikasi tidak mendukung keanggotaan tidak langsung. Penetapan grup 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 layar peran Pendaftaran aplikasi | App | berikut Membuat peran aplikasi, pilih Pengguna/Grup untuk Jenis anggota yang diizinkan.

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

Setelah membuat peran aplikasi dalam pendaftaran aplikasi, Profesional TI dapat menetapkan pengguna dan grup ke peran tersebut. Aplikasi Anda mendapatkan roles klaim di token Anda (token ID untuk aplikasi, token akses untuk API) dengan semua peran yang ditetapkan pengguna yang masuk seperti yang ditunjukkan dalam contoh token berikut.

"aud": "acaf6ce9-81f0-462a-a93d-a314070738d3",
"iss": "https://login.microsoftonline.com/833ced3d-cb2e-41de-92f1-29e2af035ddc/v2.0",
"iat": 1670826509, "nbf": 1670826509, "exp": 1670830409,
"name": "Kyle Marsh",
"oid": "cb7eda1b-d09a-419e-b8bb-37836ebc6abd",
"preferred_username": "kylemar@idfordevs.dev",
"roles": [
 "Approver",
 "Reviewer" 
],
"sub": "dx-4lf-0loB3c3uVrULnZ2VTLuRRWYff0q7-QlIfYU4",
"tid": "833ced3d-cb3e-41de-92f1-29e2af035ddc",

Ingatlah agar aplikasi Anda menangani kondisi berikut:

  • tidak adanya roles klaim
  • pengguna tidak memiliki penetapan peran
  • beberapa nilai dalam roles klaim ketika 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 telah menentukan peran aplikasi 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 menentukan peran yang ditingkatkan (seperti admin) untuk aplikasi, semua pengguna dan grup akan 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 grup, keuntungan lain menggunakan peran 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 groups klaim 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. Lihat Menerapkan kontrol akses berbasis peran dalam aplikasi untuk mempelajari cara menerapkan logika otorisasi di aplikasi Anda.

Langkah berikutnya