Mulai cepat: Melindungi API web ASP.NET Core dengan platform identitas Microsoft

Mulai cepat ini menggunakan sampel kode API web ASP.NET Core untuk menunjukkan cara membatasi akses sumber daya ke akun resmi. Sampel menggunakan ASP.NET Core Identity yang berinteraksi dengan Microsoft Authentication Library (MSAL) untuk menangani autentikasi.

Prasyarat

Mendaftarkan pengidentifikasi aplikasi dan rekaman

Tip

Langkah-langkah dalam artikel ini mungkin sedikit berbeda berdasarkan portal tempat Anda memulai.

Untuk menyelesaikan pendaftaran, beri nama aplikasi dan tentukan jenis akun yang didukung. Setelah terdaftar, halaman Gambaran Umum aplikasi menampilkan pengidentifikasi yang diperlukan dalam kode sumber aplikasi.

  1. Masuk ke pusat admin Microsoft Entra setidaknya sebagai Pengembang Aplikasi.

  2. Jika Anda memiliki akses ke beberapa penyewa, gunakan ikon Pengaturan di menu atas untuk beralih ke penyewa tempat Anda ingin mendaftarkan aplikasi dari menu Direktori + langganan.

  3. Telusuri Aplikasi >Identitas>Pendaftaran aplikasi.

  4. Pilih Pendaftaran baru.

  5. Masukkan Nama untuk aplikasi, seperti NewWebAPI1.

  6. Untuk Jenis akun yang didukung, pilih Hanya akun dalam direktori organisasi ini. Untuk informasi tentang jenis akun yang berbeda, pilih opsi Bantu saya memilih .

  7. Pilih Daftarkan.

    Cuplikan layar yang memperlihatkan cara memasukkan nama dan memilih jenis akun.

  8. Panel Gambaran Umum aplikasi ditampilkan saat pendaftaran selesai. Rekam ID Direktori (penyewa) dan ID Aplikasi (klien) yang akan digunakan dalam kode sumber aplikasi Anda.

    Cuplikan layar yang memperlihatkan nilai pengidentifikasi di halaman gambaran umum.

Catatan

Jenis akun yang didukung dapat diubah dengan merujuk ke Ubah akun yang didukung oleh aplikasi.

Ekspos API

Setelah API terdaftar, Anda dapat mengonfigurasi izinnya dengan menentukan cakupan yang diekspos API ke aplikasi klien. Aplikasi klien meminta izin untuk melakukan operasi dengan meneruskan token akses bersama dengan permintaannya ke API web yang dilindungi. API web kemudian melakukan operasi yang diminta hanya jika token akses yang diterimanya berisi cakupan yang diperlukan.

  1. Di bawah Kelola, pilih Ekspos API > Tambahkan cakupan. Terima URI(api://{clientId}) ID Aplikasi yang diusulkan dengan memilih Simpan dan lanjutkan. {clientId} adalah nilai yang direkam dari halaman Gambaran Umum. Kemudian masukkan informasi berikut:

    1. Untuk nama Cakupan, masukkan Forecast.Read.
    2. Untuk Siapa yang dapat menyetujui, pastikan bahwa opsi Admin dan pengguna dipilih.
    3. Dalam kotak Nama tampilan persetujuan admin, masukkan Read forecast data.
    4. Dalam kotak Deskripsi persetujuan admin, masukkan Allows the application to read weather forecast data.
    5. Dalam kotak Nama tampilan persetujuan pengguna, masukkan Read forecast data.
    6. Dalam kotak Deskripsi persetujuan pengguna, masukkan Allows the application to read weather forecast data.
    7. Pastikan bahwa Status diatur ke Diaktifkan.
  2. Pilih Tambahkan cakupan. Jika cakupan telah dimasukkan dengan benar, cakupan tersebut tercantum di panel Mengekspos API .

    Cuplikan layar yang memperlihatkan nilai bidang saat menambahkan cakupan ke API.

Mengkloning atau mengunduh aplikasi sampel

Untuk mendapatkan aplikasi sampel, Anda dapat mengkloningnya dari GitHub atau mengunduhnya sebagai file .zip .

  • Untuk mengkloning sampel, buka prompt perintah dan navigasi ke tempat Anda ingin membuat proyek, dan masukkan perintah berikut:

    git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
    
  • Unduh file .zip. Ekstrak ke jalur file di mana panjang nama kurang dari 260 karakter.

Mengonfigurasi aplikasi sampel ASP.NET Core

  1. Di IDE Anda, buka folder proyek, ms-identity-docs-code-dotnet/web-api, yang berisi sampel.

  2. Buka appsettings.json file, yang berisi cuplikan kode berikut:

    {
      "AzureAd": {
        "Instance": "https://login.microsoftonline.com/",
        "TenantId": "Enter the tenant ID obtained from the Microsoft Entra admin center",
        "ClientId": "Enter the client ID obtained from the Microsoft Entra admin center",
        "Scopes": "Forecast.Read"
      },
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "AllowedHosts": "*"
    }
    

    Temukan yang berikut ini key:

    • ClientId - Pengidentifikasi aplikasi, juga disebut sebagai klien. value Ganti teks dalam tanda kutip dengan ID Aplikasi (klien) yang direkam sebelumnya dari halaman Gambaran Umum aplikasi terdaftar.
    • TenantId - Pengidentifikasi penyewa tempat aplikasi terdaftar. value Ganti teks dalam tanda kutip dengan nilai ID Direktori (penyewa) yang direkam sebelumnya dari halaman Gambaran Umum aplikasi terdaftar.

Jalankan aplikasi sampel

  1. Jalankan perintah berikut untuk memulai aplikasi:

    dotnet run
    
  2. Output seperti sampel berikut muncul:

    ...
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: https://localhost:{port}
    ...
    

    Rekam nomor port di https://localhost:{port} URL.

  3. Untuk memverifikasi bahwa titik akhir dilindungi, gunakan perintah cURL berikut di Bash untuk mengirim permintaan HTTP GET yang tidak diautentikasi di Bash:

    curl -X GET https://localhost:5001/weatherforecast -ki
    

    Respons yang diharapkan adalah 401 Tidak Sah dengan output yang mirip dengan:

    user@host:~$ curl -X GET https://localhost:5001/weatherforecast -ki
    HTTP/2 401
    date: Fri, 23 Sep 2023 23:34:24 GMT
    server: Kestrel
    www-authenticate: Bearer
    content-length: 0