Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: Penyewa Tenaga Kerja
Penyewa eksternal (pelajari selengkapnya)
Kontrol akses berbasis peran (RBAC) adalah mekanisme untuk memberlakukan otorisasi dalam aplikasi. MICROSOFT Entra External ID memungkinkan Anda menentukan peran aplikasi untuk aplikasi Anda dan menetapkan peran tersebut kepada pengguna dan grup. Peran yang Anda tetapkan kepada pengguna atau grup menentukan tingkat akses mereka ke sumber daya dan operasi di aplikasi Anda. Saat ID eksternal mengeluarkan token keamanan untuk pengguna yang diautentikasi, ID tersebut menyertakan nama-nama peran yang telah Anda tetapkan kepada pengguna atau grup dalam klaim peran dari token keamanan.
Anda juga dapat mengonfigurasi tenant eksternal untuk mengembalikan keanggotaan grup dari pengguna. Pengembang kemudian dapat menggunakan kelompok keamanan untuk menerapkan RBAC dalam aplikasi mereka, di mana keanggotaan pengguna dalam grup tertentu ditafsirkan sebagai keanggotaan peran mereka.
Setelah Anda menetapkan pengguna dan grup ke peran, pernyataan peran tercantum dalam token keamanan Anda. Namun, untuk mengeluarkan klaim keanggotaan grup dalam token keamanan, Anda memerlukan konfigurasi tambahan di penyewa eksternal Anda.
Dalam artikel ini, Anda akan mempelajari cara menerima peran pengguna, keanggotaan grup, atau keduanya sebagai klaim dalam token keamanan untuk aplikasi web Node.js Anda.
Prasyarat
Jika Anda belum melakukannya, selesaikan langkah-langkah dalam artikel Menggunakan kontrol akses berbasis peran untuk aplikasi . Artikel ini memperlihatkan kepada Anda cara membuat peran untuk aplikasi Anda, cara menetapkan pengguna dan grup ke peran tersebut, cara menambahkan anggota ke grup, dan cara menambahkan klaim grup ke token keamanan. Pelajari selengkapnya tentang token ID dan token akses .
Jika Anda belum melakukannya, selesaikan langkah-langkah masuk pengguna di aplikasi web Anda sendiri Node.js
Menerima klaim grup dan peran di aplikasi web Node.js Anda
Setelah mengkonfigurasi penyewa eksternal Anda, Anda dapat mengambil klaim peran dan grup di aplikasi klien Anda. Peran dan grup klaim terdapat di ID token dan access token, tetapi aplikasi klien Anda hanya perlu memeriksa klaim ini pada ID token untuk menerapkan otorisasi di sisi klien. Aplikasi API juga dapat mengambil klaim ini saat menerima token akses.
Anda memeriksa nilai klaim peran Anda seperti yang ditunjukkan dalam contoh cuplikan kode berikut:
const msal = require('@azure/msal-node');
const { msalConfig, TENANT_SUBDOMAIN, REDIRECT_URI, POST_LOGOUT_REDIRECT_URI } = require('../authConfig');
...
class AuthProvider {
...
async handleRedirect(req, res, next) {
const authCodeRequest = {
...req.session.authCodeRequest,
code: req.body.code, // authZ code
codeVerifier: req.session.pkceCodes.verifier, // PKCE Code Verifier
};
try {
const msalInstance = this.getMsalInstance(this.config.msalConfig);
const tokenResponse = await msalInstance.acquireTokenByCode(authCodeRequest, req.body);
let roles = tokenResponse.idTokenClaims.roles;
//Check roles
if (roles && roles.includes("Orders.Manager")) {
//This user can view the ID token claims page.
res.redirect('/id');
}
//User can only view the index page.
res.redirect('/');
} catch (error) {
next(error);
}
}
...
}
Jika Anda menetapkan pengguna ke beberapa peran, string roles
berisi semua peran yang dipisahkan oleh koma, seperti Orders.Manager,Store.Manager,...
. Pastikan Anda membuat aplikasi untuk menangani kondisi berikut:
- tidak adanya klaim
roles
dalam token - pengguna belum ditetapkan ke peran apa pun
- beberapa nilai di klaim
roles
saat Anda menetapkan pengguna ke beberapa peran
Anda juga dapat memeriksa grup nilai klaim seperti yang ditunjukkan dalam contoh cuplikan kode berikut:
const tokenResponse = await msalInstance.acquireTokenByCode(authCodeRequest, req.body);
let groups = tokenResponse.idTokenClaims.groups;
Nilai klaim grup adalah objectId grup . Jika pengguna adalah anggota dari beberapa grup, string groups
berisi semua grup yang dipisahkan oleh koma, seperti 7f0621bc-b758-44fa-a2c6-...,6b35e65d-f3c8-4c6e-9538-...
.
Nota
Jika Anda menetapkan pengguna peran bawaan Microsoft Entra atau umumnya dikenal sebagai peran direktori, peran tersebut muncul dalam klaim grup dari token keamanan.
Menangani kelebihan kapasitas grup
Untuk memastikan bahwa ukuran token keamanan tidak melebihi batas ukuran header HTTP, ID Eksternal membatasi jumlah ID objek yang disertakan dalam klaim grup . Batas kelebihan penggunaan adalah 150 untuk token SAML dan 200 untuk token JWT. Dimungkinkan untuk melebihi batas ini jika pengguna termasuk dalam banyak grup, dan kamu meminta daftar semua grup.
Mendeteksi kelebihan grup dalam kode sumber Anda
Jika Anda tidak dapat menghindari kelebihan grup, Maka Anda perlu menanganinya dalam kode Anda. Ketika Anda melebihi batas kelebihan penggunaan, token tidak berisi klaim grup . Sebagai gantinya, token berisi klaim _claim_names yang berisi anggota grup dari array. Jadi, Anda perlu memeriksa keberadaan klaim _claim_names untuk menunjukkan bahwa kelebihan telah terjadi. Cuplikan kode berikut menunjukkan kepada Anda cara mendeteksi kelebihan grup:
const tokenResponse = await msalInstance.acquireTokenByCode(authCodeRequest, req.body);
if(tokenResponse.idTokenClaims.hasOwnProperty('_claim_names') && tokenResponse.idTokenClaims['_claim_names'].hasOwnProperty('groups')) {
//overage has occurred
}
Gunakan instruksi pada artikel Konfigurasi klaim grup dan peran aplikasi dalam token untuk mempelajari cara meminta daftar grup secara lengkap ketika terjadi kelebihan grup.
Cara menggunakan nilai grup dan peran di aplikasi web Node.js Anda
Di aplikasi klien, Anda dapat memverifikasi apakah pengguna yang masuk memiliki peran yang diperlukan untuk mengakses rute yang dilindungi atau memanggil titik akhir API. Untuk melakukannya, Anda memeriksa klaim roles
pada token ID. Untuk menerapkan perlindungan ini di aplikasi, Anda dapat membangun penjaga dengan menggunakan middleware kustom.
Di aplikasi layanan (aplikasi API), Anda juga dapat melindungi titik akhir API. Setelah Anda memvalidasi token akses yang dikirim oleh aplikasi klien, Anda dapat memeriksa klaim peran atau klaim grup di dalam klaim muatan token akses.
Apakah saya menggunakan Peran atau Grup Aplikasi?
Dalam artikel ini, Anda telah mempelajari bahwa Anda dapat menggunakan Peran Aplikasi atau Grup untuk menerapkan RBAC di aplikasi Anda. Pendekatan yang disukai adalah menggunakan peran aplikasi karena memberikan kontrol yang lebih terperinci saat mengelola akses/izin di tingkat aplikasi. Untuk informasi selengkapnya tentang cara memilih pendekatan, lihat Memilih pendekatan.
Langkah berikutnya
- Pelajari selengkapnya tentang Mengonfigurasi klaim grup dan peran aplikasi dalam token.