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.
Tantangan umum bagi pengembang adalah pengelolaan rahasia, kredensial, sertifikat, dan kunci yang digunakan untuk mengamankan komunikasi antar layanan. Identitas terkelola dalam Azure menghilangkan kebutuhan pengembang untuk menangani kredensial ini secara manual. MSAL Node mendukung perolehan token melalui layanan identitas terkelola saat digunakan dengan aplikasi yang berjalan di dalam infrastruktur Azure, seperti:
-
Azure App Service (versi
2019-08-01API ke atas) - Azure VM
- Azure Arc
- Azure Cloud Shell
- Azure Service Fabric
- Azure Machine Learning
Untuk daftar lengkapnya, lihat layanan Azure yang dapat menggunakan identitas terkelola untuk mengakses layanan lain.
Note
Pustaka MSAL berbasis browser tidak menawarkan identitas terkelola karena browser tidak dihosting di Azure.
SDK mana yang akan digunakan — Azure SDK atau MSAL?
Node MSAL dan Azure SDK memungkinkan token diperoleh melalui identitas terkelola. Secara internal, Azure SDK menggunakan MSAL Node, yang menyediakan API tingkat tinggi melalui abstraksi DefaultAzureCredential dan ManagedIdentityCredential.
Jika aplikasi Anda sudah menggunakan salah satu SDK, lanjutkan menggunakan SDK yang sama. Gunakan Azure SDK jika Anda menulis aplikasi baru dan berencana untuk memanggil sumber daya Azure lainnya, karena SDK ini memberikan pengalaman pengembang yang lebih baik dengan memungkinkan aplikasi berjalan pada mesin pengembang privat di mana identitas terkelola tidak ada. Pertimbangkan untuk menggunakan MSAL jika Anda perlu memanggil API web hilir lainnya seperti Microsoft Graph atau API web Anda sendiri.
Untuk memulai dan melihat Azure Identitas Terkelola yang sedang beraksi, Anda dapat menggunakan salah satu sampel identitas terkelola MSAL Node.
Cara menggunakan identitas terkelola
Ada dua jenis identitas terkelola yang tersedia untuk pengembang - ditetapkan sistem dan ditetapkan pengguna. Anda dapat mempelajari selengkapnya tentang perbedaan dalam artikel Jenis identitas terkelola . MSAL Node mendukung perolehan token dengan keduanya.
Sebelum Anda dapat menggunakan identitas terkelola dari MSAL Node, Anda harus mengaktifkannya untuk sumber daya yang ingin mereka gunakan melalui Azure CLI atau portal Azure.
Untuk identitas yang ditetapkan pengguna dan yang ditetapkan sistem, pengembang dapat menggunakan kelas .ManagedIdentityApplication
Identitas terkelola yang ditetapkan sistem
Untuk identitas terkelola yang ditetapkan sistem, pengembang tidak perlu meneruskan informasi tambahan apa pun saat membuat instans ManagedIdentityApplication, karena akan secara otomatis menyimpulkan metadata yang relevan tentang identitas yang ditetapkan.
acquireToken dipanggil dengan sumber daya yang tokennya ingin diperoleh, seperti https://management.azure.com.
import {
ManagedIdentityApplication,
ManagedIdentityConfiguration,
ManagedIdentityRequestParams,
NodeSystemOptions,
LoggerOptions,
LogLevel,
AuthenticationResult
} from "@azure/msal-node";
const config: ManagedIdentityConfiguration = {
system: {
loggerOptions: {
logLevel: LogLevel.Verbose,
} as LoggerOptions,
} as NodeSystemOptions,
};
const systemAssignedManagedIdentityApplication: ManagedIdentityApplication =
new ManagedIdentityApplication(config);
const managedIdentityRequestParams: ManagedIdentityRequestParams = {
resource: "https://management.azure.com",
};
const response: AuthenticationResult =
await systemAssignedManagedIdentityApplication.acquireToken(
managedIdentityRequestParams
);
console.log(response);
Identitas terkelola yang ditetapkan pengguna
Untuk identitas terkelola yang ditetapkan pengguna, pengembang perlu meneruskan ID klien, pengidentifikasi sumber daya lengkap, atau ID objek identitas terkelola saat membuat ManagedIdentityApplication.
Seperti dalam kasus untuk identitas terkelola yang ditetapkan sistem, acquireToken dipanggil dengan sumber daya untuk memperoleh token.
import {
ManagedIdentityApplication,
ManagedIdentityConfiguration,
ManagedIdentityIdParams,
ManagedIdentityRequestParams,
NodeSystemOptions,
LoggerOptions,
LogLevel,
AuthenticationResult
} from "@azure/msal-node";
const managedIdentityIdParams: ManagedIdentityIdParams = {
userAssignedClientId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
};
const config: ManagedIdentityConfiguration = {
managedIdentityIdParams,
system: {
loggerOptions: {
logLevel: LogLevel.Verbose,
} as LoggerOptions,
} as NodeSystemOptions,
};
const userAssignedManagedIdentityApplication: ManagedIdentityApplication =
new ManagedIdentityApplication(config);
const managedIdentityRequestParams: ManagedIdentityRequestParams = {
resource: "https://management.azure.com",
};
const response: AuthenticationResult =
await userAssignedManagedIdentityApplication.acquireToken(
managedIdentityRequestParams
);
console.log(response);
Caching
MSAL Node menyimpan token dari identitas terkelola dalam memori. Tidak ada eviksi, tetapi memori tidak menjadi masalah karena hanya sejumlah terbatas identitas terkelola yang dapat ditentukan. Ekstensibilitas cache tidak didukung dalam skenario ini karena token tidak boleh dibagikan antar mesin.
Pemecahan masalah umum
Untuk permintaan yang gagal, respons kesalahan berisi ID korelasi yang dapat digunakan untuk diagnostik dan analisis log lebih lanjut. Perlu diingat bahwa ID korelasi yang dihasilkan di MSAL atau diteruskan ke MSAL berbeda dari yang dikembalikan dalam respons kesalahan server, karena MSAL tidak dapat meneruskan ID korelasi ke titik akhir akuisisi token identitas terkelola.
ManagedIdentityError — Kode Kesalahan: invalid_resource
Pesan Kesalahan: Sumber daya yang disediakan adalah URL yang tidak valid.
Pengecualian ini mungkin berarti bahwa sumber daya yang Anda coba peroleh token tidak didukung atau disediakan menggunakan format ID sumber daya yang salah. Contoh format ID sumber daya yang benar termasuk https://management.azure.com/.default, , https://management.azure.comdan https://graph.microsoft.com.