Mulai cepat: Mendapatkan token dan memanggil Microsoft Graph API dari Node.js aplikasi konsol menggunakan identitas aplikasi

Dalam mulai cepat ini, Anda mengunduh dan menjalankan sampel kode yang menunjukkan bagaimana aplikasi konsol Node.js bisa mendapatkan token akses menggunakan identitas aplikasi untuk memanggil Microsoft Graph API dan menampilkan daftar pengguna di direktori. Contoh kode menunjukkan bagaimana pekerjaan tanpa pengawasan atau layanan Windows dapat berjalan dengan identitas aplikasi, bukan identitas pengguna.

Mulai cepat ini menggunakan Microsoft Authentication Library for Node.js (MSAL Node) dengan pemberian kredensial klien.

Prasyarat

Mendaftar dan mengunduh aplikasi sampel

Ikuti langkah-langkah di bawah ini untuk memulai.

Langkah 1: Daftarkan aplikasi

Untuk mendaftarkan aplikasi Anda dan menambahkan informasi pendaftaran aplikasi ke solusi Anda secara manual, ikuti langkah-langkah berikut:

  1. Masuk ke portal Microsoft Azure.
  2. Jika Anda memiliki akses ke beberapa penyewa, gunakan filter Direktori + langganan di menu atas untuk beralih penyewa aplikasinya ingin Anda daftarkan.
  3. Cari dan pilih Microsoft Azure Active Directory.
  4. Di bagian Kelola, pilih Pendaftaran aplikasiPendaftaran baru.
  5. Masukkan Nama untuk aplikasi Anda, misalnya . Pengguna aplikasi mungkin melihat nama ini, dan Anda dapat mengubahnya nanti.
  6. Pilih Daftarkan.
  7. Di bawah Kelola, pilih Sertifikat rahasia.
  8. Di bawah Rahasia klien, pilih Rahasia klien baru, masukkan nama, lalu pilih Tambahkan. Catat nilai rahasia di lokasi aman untuk digunakan di langkah selanjutnya.
  9. Di bawah Kelola, pilih Izin APITambahkan izin. Pilih Microsoft Graph.
  10. Pilih Izin aplikasi.
  11. Di bawah Node pengguna, pilih User.Read.All, lalu pilih Tambahkan izin.

Mengunduh dan mengonfigurasi contoh aplikasi

Langkah 1: Konfigurasikan aplikasi di portal Microsoft Azure

Agar contoh kode untuk mulai cepat ini berfungsi, Anda perlu membuat rahasia klien, dan menambahkan izin aplikasi User.Read.All dari Graph API.

Telah dikonfigurasi Aplikasi Anda dikonfigurasi dengan atribut ini.

Langkah 2: Unduh proyek contoh Node.js

Catatan

Enter_the_Supported_Account_Info_Here

Langkah 3: Konfigurasikan proyek contoh Node.js

  1. Ekstrak file zip ke folder lokal yang dekat dengan akar disk, misalnya, C:/Azure-Samples.

  2. Edit .env dan ganti nilai bidang , CLIENT_ID, dan CLIENT_SECRET dengan cuplikan berikut:

    "TENANT_ID": "Enter_the_Tenant_Id_Here",
    "CLIENT_ID": "Enter_the_Application_Id_Here",
    "CLIENT_SECRET": "Enter_the_Client_Secret_Here"
    

    Di mana:

    • Enter_the_Application_Id_Here - adalah Enter_the_Application_Id_Here dari aplikasi yang Anda daftarkan sebelumnya. Temukan ID ini di panel Gambaran Umum pendaftaran aplikasi di portal Microsoft Azure.
    • Enter_the_Tenant_Id_Here - ganti nilai ini dengan Enter_the_Tenant_Id_Here atau Nama penyewa (misalnya, contoso.microsoft.com). Temukan nilai ini di panel Gambaran Umum pendaftaran aplikasi di portal Microsoft Azure.
    • Enter_the_Client_Secret_Here - ganti nilai ini dengan rahasia klien yang Anda buat sebelumnya. Untuk membuat kunci baru, gunakan Sertifikat rahasia di pengaturan pendaftaran aplikasi di portal Microsoft Azure.

Peringatan

Setiap rahasia teks biasa dalam kode sumber menimbulkan peningkatan risiko keamanan. Artikel ini menggunakan rahasia klien teks biasa hanya untuk mempermudah. Gunakan kredensial sertifikat, bukan rahasia dalam aplikasi klien rahasia Anda, terutama aplikasi yang ingin Anda sebarkan ke produksi.

Jika Anda mencoba menjalankan aplikasi pada saat ini, Anda akan menerima HTTP 403 - Kesalahan terlarang: . Kesalahan ini terjadi karena izin khusus aplikasi yang memerlukan persetujuan admin: administrator global direktori Anda harus memberikan persetujuan untuk aplikasi Anda. Memilih salah satu opsi di bawah ini bergantung pada peran Anda:

Administrator penyewa global

Jika Anda adalah administrator penyewa global, buka halaman Izin API di Pendaftaran Aplikasi portal Microsoft Azure dan pilih Beri persetujuan admin untuk {Nama Penyewa} (di mana {Nama Penyewa} adalah nama direktori Anda).

Jika Anda adalah administrator global, buka halaman Izin API pilih Beri persetujuan admin untuk Enter_the_Tenant_Name_Here

Pengguna standar

Jika Anda adalah pengguna standar penyewa Anda, maka Anda perlu meminta administrator global untuk memberikan persetujuan admin aplikasi Anda. Untuk melakukan ini, berikan URL berikut ini kepada administrator Anda:

https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here

Di mana:

  • Enter_the_Tenant_Id_Here - ganti nilai ini dengan Enter_the_Tenant_Id_Here atau Nama penyewa (misalnya, contoso.microsoft.com)
  • Enter_the_Application_Id_Here - adalah Enter_the_Application_Id_Here untuk aplikasi yang Anda daftarkan.

Langkah 4: Jalankan aplikasi

Langkah 5: Jalankan aplikasi

Temukan folder root sampel (jika package.json berada) di prompt perintah atau konsol. Anda harus menginstal dependensi sampel ini sekali saja:

npm install

Kemudian, jalankan aplikasi melalui permintaah perintah atau konsol:

node . --op getUsers

Anda akan melihat pada output konsol beberapa fragmen JSON yang mewakili daftar pengguna di direktori Azure AD Anda.

Tentang kode

Di bawah ini, beberapa aspek penting dari aplikasi sampel yang dibahas.

MSAL Node

MSAL Node adalah lpustaka yang digunakan untuk memasukkan pengguna dan meminta token yang digunakan untuk mengakses API yang dilindungi oleh platform identitas Microsoft. Seperti yang dijelaskan, mulai cepat ini meminta token berdasarkan izin aplikasi (menggunakan identitas aplikasi sendiri) alih-alih izin yang didelegasikan. Alur otentikasi yang digunakan dalam kasus ini dikenal sebagai aliran kredensial klien OAuth 2.0. Untuk informasi selengkapnya tentang cara menggunakan MSAL Node dengan aplikasi daemon, lihat Skenario: Aplikasi Daemon.

Anda dapat menginstal Node MSAL dengan menjalankan perintah npm berikut.

npm install @azure/msal-node --save

Inisialisasi MSAL

Anda bisa menambahkan referensi untuk MSAL dengan menambahkan kode berikut:

const msal = require('@azure/msal-node');

Kemudian, inisialisasi MSAL menggunakan kode berikut:

const msalConfig = {
    auth: {
        clientId: "Enter_the_Application_Id_Here",
        authority: "https://login.microsoftonline.com/Enter_the_Tenant_Id_Here",
        clientSecret: "Enter_the_Client_Secret_Here",
   }
};
const cca = new msal.ConfidentialClientApplication(msalConfig);
Di mana: Deskripsi
clientId ID Aplikasi (klien) untuk aplikasi yang terdaftar di portal Microsoft Azure. Anda dapat menemukan nilai ini di halaman Gambaran Umum aplikasi di portal Microsoft Azure.
authority Titik akhir STS untuk diautentikasi oleh pengguna. Biasanya https://login.microsoftonline.com/{tenant} untuk cloud publik, di mana {tenant} adalah nama penyewa atau Id penyewa Anda.
clientSecret Adalah rahasia klien yang dibuat untuk aplikasi di Azure Portal.

Untuk informasi lebih lanjut, silakan lihat dokumentasi referensi untuk

Meminta token

Untuk meminta token menggunakan identitas aplikasi, gunakan metode acquireTokenByClientCredential:

const tokenRequest = {
    scopes: [ 'https://graph.microsoft.com/.default' ],
};

const tokenResponse = await cca.acquireTokenByClientCredential(tokenRequest);
Di mana: Deskripsi
tokenRequest Berisi cakupan yang diminta. Untuk klien rahasia, ini harus menggunakan format yang mirip {Application ID URI}/.default dengan menunjukkan bahwa cakupan yang diminta adalah yang didefinisikan secara statis dalam objek aplikasi yang diatur di Portal Azure (untuk Microsoft Graph, {Application ID URI} menunjuk ke https://graph.microsoft.com). Untuk API web kustom, {Application ID URI} didefinisikan di bagian {Application ID URI} di Pendaftaran Aplikasi Portal Azure.
tokenResponse Respons berisi token akses untuk cakupan yang diminta.

Bantuan dan dukungan

Jika Anda memerlukan bantuan, ingin melaporkan masalah, atau ingin mempelajari opsi dukungan, lihat Bantuan dan dukungan bagi pengembang.

Langkah berikutnya

Untuk mempelajari lebih lanjut tentang pengembangan aplikasi daemon/konsol dengan MSAL Node, lihat tutorial: