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.
Penting
Berlaku mulai 1 Mei 2025, Azure AD B2C tidak akan lagi tersedia untuk dibeli untuk pelanggan baru. Pelajari lebih lanjut di FAQ kami.
Untuk mengotorisasi akses ke API web, Anda hanya dapat melayani permintaan yang menyertakan token akses valid yang dikeluarkan oleh Azure Active Directory B2C (Azure AD B2C). Artikel ini memperlihatkan kepada Anda cara mengaktifkan otorisasi Azure AD B2C ke API web Anda. Setelah Anda menyelesaikan langkah-langkah dalam artikel ini, hanya pengguna yang mendapatkan token akses yang valid yang akan diotorisasi untuk memanggil titik akhir API web Anda.
Prasyarat
Sebelum memulai, baca salah satu artikel berikut, yang membahas cara mengonfigurasi autentikasi untuk aplikasi yang memanggil API web. Kemudian, ikuti langkah-langkah dalam artikel ini untuk mengganti api web sampel dengan API web Anda sendiri.
- Mengonfigurasi autentikasi dalam sampel aplikasi ASP.NET Core
- Mengonfigurasi autentikasi dalam sampel aplikasi halaman tunggal (SPA)
Gambaran Umum
Autentikasi berbasis token memastikan bahwa permintaan ke API web menyertakan token akses yang valid.
Aplikasi menyelesaikan langkah-langkah berikut:
Ini mengautentikasi pengguna dengan Azure AD B2C.
Ini memperoleh token akses dengan izin (cakupan) yang diperlukan untuk titik akhir API web.
Ini mengirimkan token akses sebagai token pembawa di header autentikasi permintaan HTTP dengan menggunakan format ini:
Authorization: Bearer <access token>
API web menyelesaikan langkah-langkah berikut:
Ini membaca token pembawa dari header otorisasi dalam permintaan HTTP.
Ini memvalidasi token.
Ini melakukan validasi izin (cakupan) dalam token.
Ini membaca klaim yang dikodekan dalam token (opsional).
Ini menanggapi permintaan HTTP.
Ringkasan pendaftaran aplikasi
Untuk mengaktifkan aplikasi Anda untuk masuk dengan Azure AD B2C dan memanggil API web, Anda perlu mendaftarkan dua aplikasi di direktori Azure AD B2C.
Pendaftaran aplikasi web, seluler, atau SPA memungkinkan aplikasi Anda untuk masuk dengan Azure AD B2C. Proses pendaftaran aplikasi menghasilkan ID Aplikasi, juga dikenal sebagai ID klien, yang secara unik mengidentifikasi aplikasi Anda (misalnya, ID Aplikasi: 1).
Pendaftaran API web memungkinkan aplikasi Anda memanggil API web yang dilindungi. Pendaftaran mengekspos izin API web (cakupan). Proses pendaftaran aplikasi menghasilkan ID Aplikasi, yang secara unik mengidentifikasi API web Anda (misalnya, ID Aplikasi: 2). Berikan izin aplikasi Anda (ID Aplikasi: 1) ke cakupan API web (ID Aplikasi: 2).
Pendaftaran aplikasi dan arsitektur aplikasi dijelaskan dalam diagram berikut:
Menyiapkan lingkungan pengembangan Anda
Di bagian berikutnya, Anda membuat proyek API web baru. Pilih bahasa pemrograman Anda, ASP.NET Core, atau Node.js. Pastikan Anda memiliki komputer yang menjalankan salah satu perangkat lunak berikut:
- Visual Studio Code
- C# untuk Visual Studio Code (versi terbaru)
- .NET 5.0 SDK
Langkah 1: Membuat API web yang dilindungi
Buat proyek API web baru. Pertama, pilih bahasa pemrograman yang ingin Anda gunakan, ASP.NET Core atau Node.js.
Gunakan perintah dotnet new
. Perintah dotnet new
membuat folder baru bernama TodoList dengan aset proyek API web. Buka direktori, lalu buka Visual Studio Code.
dotnet new webapi -o TodoList
cd TodoList
code .
Saat Anda diminta untuk "menambahkan aset yang diperlukan ke proyek," pilih Ya.
Langkah 2: Instal dependensi
Tambahkan pustaka autentikasi ke proyek API web Anda. Pustaka autentikasi mengurai header autentikasi HTTP, memvalidasi token, dan mengekstrak klaim. Untuk informasi selengkapnya, tinjau dokumentasi untuk pustaka.
Untuk menambahkan pustaka autentikasi, instal paket dengan menjalankan perintah berikut:
dotnet add package Microsoft.Identity.Web
Langkah 3: Memulai pustaka autentikasi
Tambahkan kode yang diperlukan untuk memulai pustaka autentikasi.
Buka Startup.cs lalu, di awal kelas, tambahkan deklarasi berikut using
:
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.Identity.Web;
Temukan fungsi ConfigureServices(IServiceCollection services)
. Kemudian, sebelum services.AddControllers();
baris kode, tambahkan cuplikan kode berikut:
public void ConfigureServices(IServiceCollection services)
{
// Adds Microsoft Identity platform (Azure AD B2C) support to protect this Api
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(options =>
{
Configuration.Bind("AzureAdB2C", options);
options.TokenValidationParameters.NameClaimType = "name";
},
options => { Configuration.Bind("AzureAdB2C", options); });
// End of the Microsoft Identity platform block
services.AddControllers();
}
Temukan fungsi Configure
. Kemudian, segera setelah app.UseRouting();
baris kode, tambahkan cuplikan kode berikut:
app.UseAuthentication();
Setelah perubahan, kode Anda akan terlihat seperti cuplikan berikut:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
// Add the following line
app.UseAuthentication();
// End of the block you add
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
Langkah 4: Tambahkan titik akhir
Tambahkan dua titik akhir ke API web Anda:
- Titik akhir anonim
/public
. Titik akhir ini mengembalikan tanggal dan waktu saat ini. Gunakan untuk men-debug API web Anda dengan panggilan anonim. - Titik akhir yang dilindungi
/hello
. Titik akhir ini mengembalikan nilainame
klaim dalam token akses.
Untuk menambahkan titik akhir anonim:
Di bawah folder /Controllers , tambahkan file PublicController.cs , lalu tambahkan ke cuplikan kode berikut:
using System;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace TodoList.Controllers
{
[ApiController]
[Route("[controller]")]
public class PublicController : ControllerBase
{
private readonly ILogger<PublicController> _logger;
public PublicController(ILogger<PublicController> logger)
{
_logger = logger;
}
[HttpGet]
public ActionResult Get()
{
return Ok( new {date = DateTime.UtcNow.ToString()});
}
}
}
Untuk menambahkan titik akhir yang dilindungi:
Di bawah folder /Controllers , tambahkan file HelloController.cs , lalu tambahkan ke kode berikut:
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.Identity.Web.Resource;
namespace TodoList.Controllers
{
[Authorize]
[RequiredScope("tasks.read")]
[ApiController]
[Route("[controller]")]
public class HelloController : ControllerBase
{
private readonly ILogger<HelloController> _logger;
private readonly IHttpContextAccessor _contextAccessor;
public HelloController(ILogger<HelloController> logger, IHttpContextAccessor contextAccessor)
{
_logger = logger;
_contextAccessor = contextAccessor;
}
[HttpGet]
public ActionResult Get()
{
return Ok( new { name = User.Identity.Name});
}
}
}
HelloController
Pengontrol dihiasi dengan AuthorizeAttribute, yang membatasi akses hanya untuk pengguna yang diautentikasi.
Pengontrol juga dihiasi dengan [RequiredScope("tasks.read")]
.
RequiredScopeAttribute memverifikasi bahwa API web dipanggil dengan cakupan yang tepat, tasks.read
.
Langkah 5: Mengonfigurasi server web
Di lingkungan pengembangan, atur API web untuk mendengarkan nomor port permintaan HTTP atau HTTPS masuk. Dalam contoh ini, gunakan port HTTP 6000 dan port HTTPS 6001. URI dasar API web akan untuk http://localhost:6000
HTTP dan https://localhost:6001
untuk HTTPS.
Tambahkan cuplikan JSON berikut ke file appsettings.json .
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://localhost:6000"
},
"Https": {
"Url": "https://localhost:6001"
}
}
}
Langkah 6: Mengonfigurasi API web
Tambahkan konfigurasi ke file konfigurasi. File berisi informasi tentang penyedia identitas Azure AD B2C Anda. Aplikasi API web menggunakan informasi ini untuk memvalidasi token akses yang diteruskan aplikasi web sebagai token pembawa.
Di bawah folder akar proyek, buka file appsettings.json , lalu tambahkan pengaturan berikut:
{
"AzureAdB2C": {
"Instance": "https://contoso.b2clogin.com",
"Domain": "contoso.onmicrosoft.com",
"ClientId": "<web-api-app-application-id>",
"SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>",
"SignUpSignInPolicyId": "<your-sign-up-in-policy>"
},
// More settings here
}
Dalam file appsettings.json , perbarui properti berikut ini:
Bagian | Kunci | Nilai |
---|---|---|
AzureAdB2C | Kasus | Bagian pertama dari nama penyewa Azure AD B2C Anda (misalnya, https://contoso.b2clogin.com ). |
AzureAdB2C | Ruang Lingkup | Nama lengkap penyewa Azure AD B2C Anda (misalnya, ). |
AzureAdB2C | ClientId | ID aplikasi API web. Dalam diagram sebelumnya, ini adalah aplikasi dengan ID Aplikasi: 2. Untuk mempelajari cara mendapatkan ID pendaftaran aplikasi API web Anda, lihat Prasyarat. |
AzureAdB2C | IDKebijakanDaftarMasukMasuk | Alur pengguna, atau kebijakan kustom. Untuk mempelajari cara mendapatkan alur atau kebijakan pengguna Anda, lihat Prasyarat. |
Langkah 7: Jalankan dan uji API web
Terakhir, jalankan API web dengan pengaturan lingkungan Azure AD B2C Anda.
Di shell perintah, mulai aplikasi web dengan menjalankan perintah berikut:
dotnet run
Anda akan melihat output berikut, yang berarti aplikasi Anda aktif dan berjalan dan siap menerima permintaan.
Now listening on: http://localhost:6000
Untuk menghentikan program, di shell perintah, pilih Ctrl+C. Anda dapat menjalankan ulang aplikasi dengan menggunakan node app.js
perintah .
Petunjuk / Saran
Atau, untuk menjalankan dotnet run
perintah, Anda dapat menggunakan debugger Visual Studio Code. Debugger bawaan Visual Studio Code membantu mempercepat perulangan pengeditan, kompilasi, dan debug Anda.
Buka browser dan kunjungi http://localhost:6000/public
. Di jendela browser, Anda akan melihat teks berikut ditampilkan, bersama dengan tanggal dan waktu saat ini.
Langkah 8: Panggil API web dari aplikasi Anda
Cobalah untuk memanggil titik akhir API web yang dilindungi tanpa token akses. Buka browser dan kunjungi http://localhost:6000/hello
. API mengembalikan pesan kesalahan HTTP yang tidak sah, mengonfirmasi bahwa API web dilindungi dengan token pembawa.
Lanjutkan mengonfigurasi aplikasi Anda untuk memanggil API web. Untuk panduan, lihat bagian Prasyarat .
Tonton video ini untuk mempelajari beberapa praktik terbaik saat Anda mengintegrasikan Azure AD B2C dengan API.
Konten terkait
Dapatkan contoh lengkap di GitHub:
- Dapatkan API web dengan menggunakan pustaka identitas Microsoft.