Aplikasi web yang memasukkan pengguna: Konfigurasi kode
Artikel ini menjelaskan cara mengonfigurasi kode untuk aplikasi web 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 | — | GA | ||
.NET | Microsoft.IdentityModel | Microsoft.IdentityModel | — | 2 | 2 | GA |
Inti ASP.NET | Inti ASP.NET | Microsoft.AspNetCore.Authentication | Mulai Cepat | GA | ||
Inti ASP.NET | Microsoft.Identity.Web | Microsoft.Identity.Web | Mulai Cepat | GA | ||
Java | MSAL4J | msal4j | Mulai Cepat | GA | ||
Spring | spring-cloud-azure-starter-active-directory | spring-cloud-azure-starter-active-directory | Tutorial | GA | ||
Node.js | MSAL Node | msal-node | Mulai Cepat | GA | ||
Python | MSAL Python | msal | GA | |||
Python | identitas | identitas | Mulai Cepat | -- |
(1) Ketentuan Lisensi Universal untuk Layanan Online berlaku untuk pustaka dalam 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 Azurehttps://login.microsoftonline.us/
untuk pemerintah As Azurehttps://login.microsoftonline.de/
untuk Microsoft Entra Jermanhttps://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 puncommon
untuk memasukkan pengguna dengan akun kantor atau sekolah atau akun pribadi Microsoftconsumers
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 applicationUrl
http://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.
Tambahkan paket NuGet Microsoft.Identity.Web dan Microsoft.Identity.Web.UI ke proyek Anda.
Microsoft.AspNetCore.Authentication.AzureAD.UI
Hapus paket NuGet jika ada.Perbarui kode di
ConfigureServices
agar menggunakan metodeAddMicrosoftIdentityWebApp
danAddMicrosoftIdentityUI
.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();
Dalam metode
Configure
pada Startup.cs, aktifkan autentikasi dengan panggilan keapp.UseAuthentication();
danapp.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 adalahAzureAd
.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 opsionalsubscribeToOpenIdConnectMiddlewareDiagnosticsEvents
ketrue
akan memperlihatkan bagaimana informasi diproses oleh kumpulan middleware ASP.NET Core saat berkembang dari respons HTTP ke identitas pengguna diHttpContext.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.