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 | — | ![]() |
![]() |
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 |
| Node.js | MSAL Node | msal-node | Mulai Cepat | ![]() |
![]() |
GA |
| Python | MSAL Python | msal | Mulai Cepat | ![]() |
![]() |
GA |
1Ketentuan penggunaan tambahan untuk Pratinjau Microsoft Azure berlaku untuk pustaka dalam Pratinjau umum.
2 Pustaka Microsoft.IdentityModel hanya memvalidasi token - pustaka ini tidak dapat meminta ID atau mengakses token.
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. Ini adalah nilai yang harus Anda tentukan dalam konfigurasi:
- Instans cloud (
Instance) jika Anda ingin aplikasi Anda berjalan di cloud nasional, misalnya - Audiens di ID penyewa (
TenantId) - ID klien (
ClientId) untuk aplikasi Anda, seperti yang disalin dari portal Microsoft Azure
Anda mungkin juga melihat referensi ke Authority. Nilai Authority adalah penggabungan nilai Instance dan TenantId.
Di ASP.NET Core, pengaturan ini terletak di file appsettings.json, di bagian "AzureAd".
{
"AzureAd": {
// Azure cloud instance among:
// - "https://login.microsoftonline.com/" for Azure public cloud
// - "https://login.microsoftonline.us/" for Azure US government
// - "https://login.microsoftonline.de/" for Azure AD Germany
// - "https://login.partner.microsoftonline.cn/common" for Azure AD China operated by 21Vianet
"Instance": "https://login.microsoftonline.com/",
// Azure AD audience among:
// - "TenantId" as a GUID obtained from the Azure portal to sign in users in your organization
// - "organizations" to sign in users in any work or school account
// - "common" to sign in users with any work or school account or Microsoft personal account
// - "consumers" to sign in users with a Microsoft personal account only
"TenantId": "[Enter the tenantId here]",
// Client ID (application ID) obtained from the Azure portal
"ClientId": "[Enter the Client Id]",
"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 bahwa applicationUrl adalah 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
Kode inisialisasi berbeda tergantung platform. Untuk ASP.NET Core dan ASP.NET, pengguna yang masuk didelegasikan ke middleware OpenID Connect. Template ASP.NET atau ASP.NET Core menghasilkan aplikasi web untuk titik akhir Microsoft Azure Active Directory (Azure AD) v1.0. Beberapa konfigurasi diperlukan untuk menyesuaikannya dengan platform identitas Microsoft. Dalam kasus Java, ini ditangani oleh Spring dengan kerja sama aplikasi.
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, kode yang menginisialisasi aplikasi ada di 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.
Untuk menambahkan autentikasi dengan platform identitas Microsoft (dulu Microsoft Azure Active Directory v2.0), Anda harus menambahkan kode berikut. Komentar dalam kode harus jelas.
Catatan
Jika Anda ingin memulai langsung dengan templat ASP.NET Core baru untuk platform identitas Microsoft, yang memanfaatkan Microsoft.Identity.Web, Anda dapat mengunduh pratinjau paket NuGet yang berisi templat proyek untuk .NET Core 3.1 dan .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 di bawah ini 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 warisan paket NuGet Microsoft.AspNetCore.Authentication.AzureAD.UI yang digunakan untuk membuat aplikasi Azure AD v1.0. Artikel ini menjelaskan cara membuat aplikasi platform identitas Microsoft (Microsoft Azure Active Directory v2.0) yang menggantikan kode tersebut.
Tambahkan paket NuGet Microsoft.Identity.Web dan Microsoft.Identity.Web.UI ke proyek Anda. Hapus paket NuGet Microsoft.AspNetCore.Authentication.AzureAD.UI.
Perbarui kode di
ConfigureServicesagar menggunakan metodeAddMicrosoftIdentityWebAppAuthenticationdanAddMicrosoftIdentityUI.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.AddMicrosoftIdentityWebAppAuthentication(Configuration, "AzureAd"); services.AddRazorPages().AddMvcOptions(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI();Dalam metode
Configurepada 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 di atas:
Metode ekstensi
AddMicrosoftIdentityWebAppAuthenticationdidefinisikan dalam Microsoft.Identity.Web. Ini:- Menambahkan layanan autentikasi.
- Mengonfigurasi opsi untuk membaca file konfigurasi (di sini dari bagian "AzureAD")
- Mengonfigurasi opsi OpenID Connect agar otoritasnya adalah platform identitas Microsoft.
- Memvalidasi pengeluar sertifikat token.
- Memastikan klaim yang sesuai dengan nama dipetakan dari klaim
preferred_usernamedalam token ID.
Selain objek konfigurasi, Anda dapat menentukan nama bagian konfigurasi saat memanggil
AddMicrosoftIdentityWebAppAuthentication. Secara default, ini adalahAzureAd.AddMicrosoftIdentityWebAppAuthenticationmemiliki 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 opsionalsubscribeToOpenIdConnectMiddlewareDiagnosticsEventsketrueakan memperlihatkan bagaimana informasi diproses oleh kumpulan middleware ASP.NET Core saat berkembang dari respons HTTP ke identitas pengguna diHttpContext.User.Metode ekstensi
AddMicrosoftIdentityUIdidefinisikan 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.

