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.
Sebelum Anda memperoleh token akses, pastikan Anda memahami cara menginisialisasi objek aplikasi. Penting juga untuk memahami hubungan antara token akses dan sumber daya.
Di MSAL, Anda dapat memperoleh token akses untuk API yang perlu dipanggil oleh aplikasi Anda menggunakan metode acquireToken* yang disediakan oleh pustaka. Metode acquireToken* mengabstraksi 2 langkah yang terlibat dalam memperoleh token dengan alur kode otorisasi OAuth 2.0:
- mengajukan permintaan ke Microsoft Entra ID untuk mendapatkan
authorization code - menukar kode tersebut dengan token akses yang berisi cakupan yang disetujui pengguna
Memperoleh Token Akses
Pilih Jenis Interaksi
Lihat di sini jika Anda tidak yakin tentang perbedaan antara acquireTokenRedirect dan acquireTokenPopup.
Menyiapkan objek permintaan
Anda harus meneruskan objek permintaan ke acquireToken* API. Objek ini memungkinkan Anda menggunakan parameter yang berbeda dalam permintaan. Lihat di sini untuk informasi selengkapnya tentang parameter objek permintaan. Cakupan diperlukan untuk semua acquireToken* panggilan.
Periksa cache
MSAL menggunakan cache untuk menyimpan token berdasarkan parameter tertentu termasuk cakupan, sumber daya dan otoritas, dan akan mengambil token dari cache saat diperlukan. Ini juga dapat melakukan pembaruan diam-diam pada token tersebut saat token itu telah kedaluwarsa. MSAL menyediakan fungsionalitas ini melalui metode acquireTokenSilent.
Setelah Anda masuk dengan salah ssoSilent satu ATAU login* API, cache akan berisi sekumpulan ID, akses, dan token refresh. Setiap kali Anda memerlukan token akses yang harus Anda panggil acquireTokenSilent dan jika ini gagal memanggil API interaktif sebagai gantinya.
acquireTokenSilent akan mencari token yang valid di cache, dan jika hampir kedaluwarsa atau tidak ada, akan secara otomatis mencoba menyegarkannya untuk Anda menggunakan token refresh yang di-cache. Anda dapat membaca selengkapnya tentang menggunakan acquireTokenSilentdi sini.
Popup
var request = {
scopes: ["User.Read"],
};
msalInstance.acquireTokenSilent(request).then(tokenResponse => {
// Do something with the tokenResponse
}).catch(async (error) => {
if (error instanceof InteractionRequiredAuthError) {
// fallback to interaction when silent call fails
return msalInstance.acquireTokenPopup(request);
}
// handle other errors
})
Redirect
var request = {
scopes: ["User.Read"],
};
msalInstance.acquireTokenSilent(request).then(tokenResponse => {
// Do something with the tokenResponse
}).catch(error => {
if (error instanceof InteractionRequiredAuthError) {
// fallback to interaction when silent call fails
return msalInstance.acquireTokenRedirect(request)
}
// handle other errors
});
Menggunakan Token Akses
Setelah mengambil token akses, Anda harus menyertakannya dalam header Authorization sebagai token bearer untuk permintaan ke sumber daya yang tokennya Anda peroleh, seperti yang ditunjukkan di bawah ini:
var headers = new Headers();
var bearer = "Bearer " + tokenResponse.accessToken;
headers.append("Authorization", bearer);
var options = {
method: "GET",
headers: headers
};
var graphEndpoint = "https://graph.microsoft.com/v1.0/me";
fetch(graphEndpoint, options)
.then(resp => {
//do something with response
});
Praktik terbaik akuisisi token MSAL
Berikut adalah praktik terbaik untuk mendapatkan token dengan MSAL guna menghindari kesalahan, penurunan performa, dan masalah kemudahan penggunaan. Skenario tertentu dapat memberikan pengecualian untuk ini.
Gunakan satu instans PublicClientApplication
Buat instans satu PublicClientApplication per aplikasi dan gunakan instans yang sama di seluruh aplikasi Anda. Ini memastikan bahwa ada satu sumber kebenaran untuk apa yang dilakukan MSAL pada waktu tertentu (lihat: Peristiwa MSAL) dan menghilangkan kemungkinan objek aplikasi yang berbeda membuat permintaan interaktif paralel atau potensi konflik cache, yang dapat merusak aplikasi, mengurangi performa atau menghambat pengalaman pengguna.
Selalu tunggu janji untuk diselesaikan
Semua API MSAL acquireToken* maupun login* menjalankan operasi asinkron dan mengembalikan promise. Anda harus selalu menunggu janji ini diselesaikan sebelum melakukan tugas lain yang bergantung pada status autentikasi atau token, seperti merender informasi pengguna, memanggil API yang dilindungi atau memanggil API MSAL lainnya.
Coba permintaan senyap terlebih dahulu, lalu interaktif
Saat meminta token, selalu gunakan acquireTokenSilent terlebih dahulu, kembali ke akuisisi token interaktif jika diperlukan (misalnya, ketika InteractionRequiredAuthError dilemparkan).
Permintaan senyap bersamaan diizinkan. Jika dua atau lebih permintaan senyap dibuat secara bersamaan, hanya satu yang akan masuk ke jaringan (jika diperlukan), tetapi semua akan menerima respons, selama permintaan tersebut untuk parameter permintaan yang sama (misalnya cakupan).
Permintaan interaktif bersamaan tidak diizinkan. Jika dua atau lebih permintaan interaktif dibuat secara bersamaan, hanya yang pertama yang akan memulai interaksi, sementara sisanya akan gagal dengan kesalahan interaction_in_progress . Sebaiknya kenali kesalahan ini dan kemungkinan solusi agar tidak mengalaminya di aplikasi Anda.
Membuat satu permintaan token per sumber daya
Anda hanya dapat meminta token akses untuk satu sumber daya sekaligus (lihat sumber daya dan cakupan). Jika diperlukan, Anda dapat meminta persetujuan pengguna untuk cakupan (izin) yang diperlukan oleh lebih dari satu sumber daya dengan menggunakan extraScopesToConsent parameter di objek permintaan. Token akses untuk cakupan yang disetujui sebelumnya dapat diperoleh secara diam-diam.