Aplikasi daemon yang memanggil API web - memanggil API web dari aplikasi

Aplikasi daemon .NET dapat memanggil API web. Aplikasi daemon .NET juga dapat memanggil beberapa API web yang telah disetujui sebelumnya.

Memanggil API web dari aplikasi daemon

Berikut cara menggunakan token untuk memanggil API:

Properti AuthenticationResult di MSAL.NET

Metode untuk memperoleh token menampilkan AuthenticationResult. Untuk metode asinkron, Task<AuthenticationResult> ditampilkan.

Dalam MSAL.NET, AuthenticationResult mengekspos:

  • AccessToken untuk API web untuk mengakses sumber daya. Parameter ini adalah string, biasanya JWT berkode Base-64. Klien tidak boleh melihat ke dalam token akses. Formatnya tidak dijamin tetap stabil, dan dapat dienkripsi untuk sumber daya. Menulis kode yang tergantung pada konten token akses pada klien adalah salah satu sumber kesalahan terbesar dan jeda logika klien. Untuk mengetahui informasi selengkapnya, lihat Token akses.
  • IdToken untuk pengguna. Parameter ini adalah JWT yang dikodekan. Untuk mengetahui informasi selengkapnya, lihat Token ID.
  • ExpiresOn memberi tahu tanggal dan waktu saat token kedaluwarsa.
  • TenantId berisi penyewa tempat pengguna ditemukan. Untuk pengguna tamu di skenario B2B Azure Active Directory (Azure AD), ID penyewa adalah penyewa tamu, bukan penyewa unik. Saat token dikirim untuk pengguna, AuthenticationResult juga berisi informasi tentang pengguna ini. Untuk alur klien rahasia yang mana token diminta tanpa pengguna untuk aplikasi, informasi pengguna ini adalah null.
  • Scopes yang tokennya dikeluarkan.
  • ID unik untuk pengguna.

IAccount

MSAL.NET mendefinisikan gagasan akun melalui antarmuka IAccount. Perubahan melanggar ini memberikan semantik yang tepat. Pengguna yang sama dapat memiliki beberapa akun, di direktori Azure AD yang berbeda. MSAL.NET juga memberikan informasi yang lebih baik dalam skenario tamu, karena informasi akun beranda disediakan. Diagram berikut menunjukkan struktur antarmuka IAccount.

IAccount interface structure

Kelas AccountId mengidentifikasi akun di penyewa tertentu dengan properti yang ditunjukkan dalam tabel berikut.

Properti Deskripsi
TenantId Representasi string untuk GUID, yang merupakan ID penyewa tempat akun berada.
ObjectId Representasi string untuk GUID, yang merupakan ID pengguna yang memiliki akun di penyewa.
Identifier Pengidentifikasi unik untuk akun. Identifier adalah perangkaian ObjectId dan TenantId yang dipisahkan oleh koma. Ini bukan Base 64 yang dikodekan.

Antarmuka IAccount mewakili informasi tentang satu akun. Pengguna yang sama dapat tersedia di penyewa yang berbeda, yang berarti bahwa pengguna dapat memiliki beberapa akun. Anggotanya ditampilkan dalam tabel berikut.

Properti Deskripsi
Username String yang berisi nilai yang dapat ditampilkan dalam format UserPrincipalName (UPN), misalnya, john.doe@contoso.com. String ini bisa null, tidak seperti HomeAccountId dan HomeAccountId.Identifier, yang tidak akan null. Properti ini menggantikan properti DisplayableId dari IUser pada versi MSAL.NET sebelumnya.
Environment String yang berisi penyedia identitas untuk akun ini, misalnya, login.microsoftonline.com. Properti ini menggantikan properti IdentityProvider dari IUser, kecuali IdentityProvider juga memiliki informasi tentang penyewa, selain lingkungan cloud. Di sini, nilainya hanya berupa host.
HomeAccountId ID akun untuk akun rumah bagi pengguna. Properti ini secara unik mengidentifikasi pengguna di seluruh penyewa Azure AD.

Gunakan token untuk memanggil API yang dilindungi

Setelah AuthenticationResult ditampilkan oleh MSAL di result, tambahkan ke header otorisasi HTTP sebelum Anda melakukan panggilan untuk mengakses API web yang dilindungi.

httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);

// Call the web API.
HttpResponseMessage response = await _httpClient.GetAsync(apiUri);
...
}

Memanggil beberapa API

Untuk aplikasi daemon, API web yang Anda panggil harus disetujui sebelumnya. Tidak ada persetujuan bertahap dengan aplikasi daemon. (Tidak ada interaksi pengguna.) Admin penyewa perlu memberikan persetujuan sebelumnya untuk aplikasi dan semua izin API. Jika Anda ingin memanggil beberapa API, memperoleh token untuk semua sumber daya, setiap kali memanggil AcquireTokenForClient. MSAL akan menggunakan cache token aplikasi untuk menghindari panggilan layanan yang tidak diperlukan.

Langkah berikutnya

Beralih ke artikel berikutnya dalam skenario ini, Beralih ke produksi.