Bagikan melalui


Aplikasi web yang memanggil API web: Memperoleh token untuk aplikasi

Berlaku untuk: Lingkaran hijau dengan simbol tanda centang putih. Penyewa Karyawan Lingkaran putih dengan simbol X abu-abu. Penyewa Eksternal (pelajari lebih lanjut)

Anda telah membangun objek aplikasi klien Anda. Sekarang, Anda menggunakannya untuk memperoleh token untuk memanggil API web. Pada ASP.NET atau ASP.NET Core, memanggil API web dilakukan di pengontrol:

  • Dapatkan token untuk API web menggunakan cache token. Untuk mendapatkan token ini, Anda memanggil metode Microsoft Authentication Library (MSAL) AcquireTokenSilent (atau yang setara di Microsoft.Identity.Web).
  • Panggil API yang dilindungi dengan mengirimkan token akses sebagai parameter.

Microsoft.Identity.Web menambahkan metode ekstensi yang menyediakan layanan kemudahan untuk memanggil Microsoft Graph atau API web downstream. Metode ini dijelaskan secara terperinci di Aplikasi web yang memanggil API web: Panggil API. Dengan metode pembantu ini, Anda tidak perlu memperoleh token secara manual.

Namun, jika Anda ingin memperoleh token secara manual, kode berikut menunjukkan contoh penggunaan Microsoft.Identity.Web untuk melakukannya di pengontrol rumah. Ini memanggil Microsoft Graph menggunakan REST API (bukan Microsoft Graph SDK). Biasanya, Anda tidak perlu mendapatkan token, Anda perlu membuat header Otorisasi yang Anda tambahkan ke permintaan Anda. Untuk mendapatkan header otorisasi, Anda menyuntikkan layanan IAuthorizationHeaderProvider melalui dependency injection di konstruktor controller Anda (atau konstruktor halaman Anda jika Anda menggunakan Blazor), dan Anda menggunakannya dalam tindakan controller Anda. Antarmuka ini memiliki metode yang menghasilkan string yang berisi protokol (Pembawa, Pop, ...) dan token. Untuk mendapatkan header otorisasi untuk memanggil API atas nama pengguna, gunakan (CreateAuthorizationHeaderForUserAsync). Untuk mendapatkan header otorisasi untuk memanggil API hilir atas nama aplikasi itu sendiri, dalam skenario daemon, gunakan (CreateAuthorizationHeaderForAppAsync).

Metode pengontrol dilindungi oleh atribut [Authorize] yang memastikan hanya pengguna terautentikasi yang dapat menggunakan aplikasi web.

[Authorize]
public class HomeController : Controller
{
 readonly IAuthorizationHeaderProvider authorizationHeaderProvider;

 public HomeController(IAuthorizationHeaderProvider authorizationHeaderProvider)
 {
  this.authorizationHeaderProvider = authorizationHeaderProvider;
 }

 // Code for the controller actions (see code below)

}

ASP.NET Core menyediakan IAuthorizationHeaderProvider melalui injeksi dependensi.

Berikut ini adalah kode yang disederhanakan untuk tindakan HomeController, yang mendapat token untuk memanggil Microsoft Graph:

[AuthorizeForScopes(Scopes = new[] { "user.read" })]
public async Task<IActionResult> Profile()
{
 // Acquire the access token.
 string[] scopes = new string[]{"user.read"};
 string accessToken = await authorizationHeaderProvider.CreateAuthorizationHeaderForUserAsync(scopes);

 // Use the access token to call a protected web API.
 HttpClient client = new HttpClient();
 client.DefaultRequestHeaders.Add("Authorization", accessToken);
 string json = await client.GetStringAsync(url);
}

Untuk lebih memahami kode yang diperlukan untuk skenario ini, lihat langkah fase 2 (2-1-Web app Calls Microsoft Graph) dari tutorial ms-identity-aspnetcore-webapp-tutorial.

Atribut AuthorizeForScopes di atas tindakan pengontrol (atau halaman Razor jika Anda menggunakan templat Razor) disediakan oleh Microsoft.Identity.Web. Ini memastikan bahwa pengguna dimintai persetujuan jika diperlukan, dan secara bertahap.

Ada variasi kompleks lainnya, seperti:

  • Memanggil beberapa API.
  • Memproses persetujuan inkremental dan pengaturan Akses Bersyarat.

Langkah-langkah lanjutan ini dibahas dalam bab 3 dari tutorial 3-WebApp-multi-API.

Langkah berikutnya

Lanjutkan ke artikel berikutnya dalam skenario ini, yaitu Panggil API web.