Aplikasi web yang memasukkan pengguna: Konfigurasi kode

Pelajari cara mengonfigurasi kode untuk aplikasi web Anda yang memasukkan pengguna.

Pustaka Microsoft yang mendukung aplikasi web

Pustaka Microsoft berikut digunakan untuk melindungi aplikasi web (dan API web):

Bahasa pemrogram/kerangka kerja Proyek di
GitHub
Paket Persiapan
memulai
Memasukkan pengguna Mengakses API web Tersedia secara umum (GA) atau
Pratinjau umum1
.NET MSAL.NET Microsoft.Identity.Client Pustaka tidak dapat meminta token ID untuk login pengguna. Pustaka dapat meminta token akses untuk API web yang dilindungi. GA
.NET Microsoft.IdentityModel Microsoft.IdentityModel Pustaka tidak dapat meminta token ID untuk login pengguna.2 Pustaka tidak dapat meminta token akses untuk API web yang dilindungi.2 GA
Inti ASP.NET Inti ASP.NET Microsoft.AspNetCore.Authentication Mulai Cepat Pustaka dapat meminta token ID untuk login pengguna. Pustaka tidak dapat meminta token akses untuk API web yang dilindungi. GA
Inti ASP.NET Microsoft.Identity.Web Microsoft.Identity.Web Mulai Cepat Pustaka dapat meminta token ID untuk login pengguna. Pustaka dapat meminta token akses untuk API web yang dilindungi. GA
Java MSAL4J msal4j Mulai Cepat Pustaka dapat meminta token ID untuk login pengguna. Pustaka dapat meminta token akses untuk API web yang dilindungi. GA
Spring spring-cloud-azure-starter-active-directory spring-cloud-azure-starter-active-directory Tutorial Pustaka dapat meminta token ID untuk login pengguna. Pustaka dapat meminta token akses untuk API web yang dilindungi. GA
Node.js MSAL Node msal-node Mulai Cepat Pustaka dapat meminta token ID untuk login pengguna. Pustaka dapat meminta token akses untuk API web yang dilindungi. GA
Python MSAL Python msal Pustaka dapat meminta token ID untuk login pengguna. Pustaka dapat meminta token akses untuk API web yang dilindungi. GA
Python identitas identitas Mulai Cepat Pustaka dapat meminta token ID untuk login pengguna. Pustaka dapat meminta token akses untuk API web yang dilindungi. --

(1)Ketentuan Lisensi Universal untuk Layanan Online berlaku untuk pustaka di Pratinjau publik.

(2) Pustaka Microsoft.IdentityModel hanya memvalidasi token - pustaka tidak dapat meminta ID atau token akses.

Pilih tab yang sesuai dengan platform yang Anda minati:

Cuplikan kode dalam artikel ini dan berikut ini diekstrak dari tutorial inkremental aplikasi web Core ASP.NET, bab 1.

Anda mungkin ingin merujuk ke tutorial ini untuk detail penerapan lengkap.

File konfigurasi

Aplikasi web yang memasukkan pengguna menggunakan platform identitas Microsoft dikonfigurasi melalui file konfigurasi. File-file tersebut harus menentukan nilai berikut:

  • Instans cloud jika Anda ingin aplikasi Anda berjalan di cloud nasional, misalnya. Opsi yang berbeda meliputi;
    • https://login.microsoftonline.com/ untuk cloud publik Azure
    • https://login.microsoftonline.us/ untuk pemerintah As Azure
    • https://login.microsoftonline.de/ untuk Microsoft Entra Jerman
    • https://login.partner.microsoftonline.cn/common untuk Microsoft Entra Tiongkok yang dioperasikan oleh 21Vianet
  • Audiens di ID penyewa. Opsi bervariasi tergantung pada apakah aplikasi Anda adalah penyewa tunggal atau multipenyewa.
    • GUID penyewa diperoleh dari portal Azure untuk memasukkan pengguna di organisasi Anda. Anda juga dapat menggunakan nama domain.
    • organizations untuk memasukkan pengguna di akun kantor atau sekolah apa pun
    • common untuk memasukkan pengguna dengan akun kantor atau sekolah atau akun pribadi Microsoft
    • consumers untuk memasukkan pengguna dengan akun pribadi Microsoft saja
  • ID klien untuk aplikasi Anda, seperti yang disalin dari portal Azure

Anda mungkin juga melihat referensi ke otoritas, perangkaian nilai INSTANS dan ID penyewa.

Di ASP.NET Core, pengaturan ini terletak di file appsettings.json , di bagian "ID Microsoft Entra".

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "[Enter the tenantId here]",

    // Client ID (application ID) obtained from the Azure portal
    "ClientId": "[Enter the Client Id here]",
    "CallbackPath": "/signin-oidc",
    "SignedOutCallbackPath": "/signout-oidc"
  }
}

Di ASP.NET Core, file lain (properties\launchSettings.json) berisi URL (applicationUrl) dan port TLS/SSL (sslPort) untuk aplikasi dan berbagai profil Anda.

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:3110/",
      "sslPort": 44321
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "webApp": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:3110/"
    }
  }
}

Di portal Microsoft Azure, URI pengalihan yang Anda daftarkan di halaman Autentikasi untuk aplikasi Anda harus cocok dengan URL ini. Untuk dua file konfigurasi sebelumnya akan menjadi https://localhost:44321/signin-oidc. Alasannya adalah applicationUrlhttp://localhost:3110, tetapi sslPort ditentukan (44321). CallbackPath adalah /signin-oidc, seperti yang ditentukan dalam appsettings.json.

Dengan cara yang sama, URI keluar akan ditetapkan ke https://localhost:44321/signout-oidc.

Catatan

SignedOutCallbackPath harus diatur ke portal atau aplikasi untuk menghindari konflik saat menangani peristiwa.

Kode inisialisasi

Perbedaan kode inisialisasi bergantung pada platform. Untuk ASP.NET Core dan ASP.NET, pengguna yang masuk didelegasikan ke middleware OpenID Connect. Templat ASP.NET atau ASP.NET Core menghasilkan aplikasi web untuk titik akhir Azure AD v1.0. Beberapa konfigurasi diperlukan untuk menyesuaikannya dengan platform identitas Microsoft.

Selain aplikasi web ASP.NET Core (dan API web), aplikasi dilindungi karena Anda memiliki atribut Authorize pada pengontrol atau tindakan pengontrol. Atribut ini memeriksa bahwa pengguna sudah diautentikasi. Sebelum rilis .NET 6, inisialisasi kode berada dalam file Startup.cs . Proyek ASP.NET Core baru dengan .NET 6 tidak lagi berisi file Startup.cs. Ia digantikan oleh file Program.cs. Bagian selanjutnya dari tutorial ini berkaitan dengan .NET 5 atau yang lebih rendah.

Catatan

Jika Anda ingin mulai langsung dengan templat ASP.NET Core baru untuk platform identitas Microsoft, yang memanfaatkan Microsoft.Identity.Web, Anda dapat mengunduh paket NuGet pratinjau yang berisi templat proyek untuk .NET 5.0. Selanjutnya, setelah diinstal, Anda dapat langsung membuat contoh aplikasi web ASP.NET Core (MVC atau Blazor). Lihat Template proyek aplikasi web Microsoft.Identity.Web untuk detailnya. Ini adalah pendekatan paling sederhana karena akan melakukan semua langkah berikut untuk Anda.

Jika Anda lebih suka memulai proyek dengan proyek web ASP.NET Core default saat ini dalam Visual Studio atau dengan menggunakan dotnet new mvc --auth SingleOrg atau dotnet new webapp --auth SingleOrg, Anda akan melihat kode seperti berikut:

 services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
         .AddAzureAD(options => Configuration.Bind("AzureAd", options));

Kode ini menggunakan paket NuGet Microsoft.AspNetCore.Authentication.AzureAD.UI warisan yang digunakan untuk membuat aplikasi Azure Active Directory v1.0. Artikel ini menjelaskan cara membuat aplikasi platform identitas Microsoft v2.0 yang menggantikan kode tersebut.

  1. Tambahkan paket NuGet Microsoft.Identity.Web dan Microsoft.Identity.Web.UI ke proyek Anda. Microsoft.AspNetCore.Authentication.AzureAD.UI Hapus paket NuGet jika ada.

  2. Perbarui kode di ConfigureServices agar menggunakan metode AddMicrosoftIdentityWebApp dan AddMicrosoftIdentityUI.

    public class Startup
    {
     ...
     // This method gets called by the runtime. Use this method to add services to the container.
     public void ConfigureServices(IServiceCollection services)
     {
      services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
             .AddMicrosoftIdentityWebApp(Configuration, "AzureAd");
    
      services.AddRazorPages().AddMvcOptions(options =>
      {
       var policy = new AuthorizationPolicyBuilder()
                     .RequireAuthenticatedUser()
                     .Build();
       options.Filters.Add(new AuthorizeFilter(policy));
      }).AddMicrosoftIdentityUI();
    
  3. Dalam metode Configure pada Startup.cs, aktifkan autentikasi dengan panggilan ke app.UseAuthentication(); dan app.MapControllers();.

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
     // more code here
     app.UseAuthentication();
     app.UseAuthorization();
    
     app.MapRazorPages();
     app.MapControllers();
     // more code here
    }
    

Dalam kode itu:

  • Metode AddMicrosoftIdentityWebApp ekstensi didefinisikan dalam Microsoft.Identity.Web, yang;

    • Mengonfigurasi opsi untuk membaca file konfigurasi (di sini dari bagian "ID Microsoft Entra")
    • Mengonfigurasi opsi OpenID Connect agar otoritasnya adalah platform identitas Microsoft.
    • Memvalidasi pengeluar sertifikat token.
    • Memastikan klaim yang sesuai dengan nama dipetakan dari klaim preferred_username dalam token ID.
  • Selain objek konfigurasi, Anda dapat menentukan nama bagian konfigurasi saat memanggil AddMicrosoftIdentityWebApp. Secara default, ini adalah AzureAd.

  • AddMicrosoftIdentityWebApp memiliki parameter lain untuk skenario tingkat lanjut. Misalnya, menelusuri kejadian middleware OpenID Connect dapat membantu Anda memecahkan masalah aplikasi web jika autentikasi tidak berfungsi. Mengatur parameter opsional subscribeToOpenIdConnectMiddlewareDiagnosticsEvents ke true akan memperlihatkan bagaimana informasi diproses oleh kumpulan middleware ASP.NET Core saat berkembang dari respons HTTP ke identitas pengguna di HttpContext.User.

  • Metode ekstensi AddMicrosoftIdentityUI didefinisikan dalam Microsoft.Identity.Web. Ini menyediakan pengontrol default untuk menangani masuk dan keluar.

Untuk informasi selengkapnya tentang bagaimana Microsoft.Identity.Web memungkinkan Anda membuat aplikasi web, lihat Web Apps di microsoft-identity-web.

Langkah berikutnya

Di artikel berikutnya, Anda akan mempelajari cara memicu masuk dan keluar.

Beralih ke artikel berikutnya dalam skenario ini, Masuk dan keluar.