Mulai cepat: Aplikasi web ASP.NET Core yang memasukkan pengguna dan memanggil Microsoft Graph atas nama mereka

Selamat Datang! Ini mungkin bukan halaman yang Anda inginkan. Sementara kami bekerja memperbaikinya, tautan ini akan membawa Anda ke artikel yang tepat:

Mulai cepat: Menambahkan perincian masuk dengan Microsoft ke aplikasi web ASP.NET Core

Kami mohon maaf atas ketidaknyamanan ini dan menghargai kesabaran Anda selama kami menyelesaikan masalah ini.

Dalam mulai cepat ini, Anda mengunduh dan menjalankan sampel kode yang menunjukkan bagaimana aplikasi web ASP.NET Core dapat memasukkan pengguna dari organisasi Microsoft Entra mana pun dan memanggil Microsoft Graph.

Lihat Cara kerja sampel untuk melihat ilustrasi.

Langkah 1: Konfigurasikan aplikasi di portal Microsoft Azure

Agar sampel kode dalam mulai cepat ini berfungsi, tambahkan URI Pengalihanhttps://localhost:44321/signin-oidc dan >URL keluar saluran depanhttps://localhost:44321/signout-oidc di pendaftaran aplikasi.

Already configured Aplikasi Anda dikonfigurasi dengan atribut ini.

Langkah 2: Unduh ASP.NET Core

Jalankan proyek.

Tip

Untuk menghindari kesalahan yang disebabkan oleh keterbatasan panjang jalur di Windows, kami sarankan mengekstrak arsip atau mengkloning repositori ke direktori di dekat akar drive Anda.

Langkah 3: Aplikasi Anda dikonfigurasi dan siap dijalankan

Kami telah mengonfigurasi proyek Anda dengan nilai properti aplikasi Anda dan siap dijalankan.

Catatan

Enter_the_Supported_Account_Info_Here

Tentang kode

Bagian ini memberikan gambaran umum tentang kode yang diperlukan untuk masuk pengguna dan memanggil Microsoft Graph API atas nama mereka. Gambaran umum ini dapat berguna untuk memahami cara kerja kode, argumen utama, dan juga jika Anda ingin menambahkan masuk ke aplikasi ASP.NET Core yang ada dan memanggil Microsoft Graph. Proses ini menggunakan Microsoft.Identity.Web, yang merupakan pembungkus di sekitar MSAL.NET.

Cara kerja sampel

Diagram that how the sample app generated by this quickstart works.

Kelas permulaan

Middleware Microsoft.AspNetCore.Authentication menggunakan Startup kelas yang dijalankan saat proses hosting menginisialisasi:


  public void ConfigureServices(IServiceCollection services)
  {  
    // Get the scopes from the configuration (appsettings.json)
    var initialScopes = Configuration.GetValue<string>("DownstreamApi:Scopes")?.Split(' ');
  
      // Add sign-in with Microsoft
      services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"))

            // Add the possibility of acquiring a token to call a protected web API
            .EnableTokenAcquisitionToCallDownstreamApi(initialScopes)

                // Enables controllers and pages to get GraphServiceClient by dependency injection
                // And use an in memory token cache
                .AddMicrosoftGraph(Configuration.GetSection("DownstreamApi"))
                .AddInMemoryTokenCaches();

      services.AddControllersWithViews(options =>
      {
          var policy = new AuthorizationPolicyBuilder()
              .RequireAuthenticatedUser()
              .Build();
          options.Filters.Add(new AuthorizeFilter(policy));
      });

      // Enables a UI and controller for sign in and sign out.
      services.AddRazorPages()
          .AddMicrosoftIdentityUI();
  }

AddAuthentication()Metode ini mengonfigurasi layanan untuk menambahkan autentikasi berbasis cookie, yang digunakan dalam skenario browser dan untuk mengatur tantangan ke OpenID Connect.

Baris yang berisi .AddMicrosoftIdentityWebApp menambahkan autentikasi platform identitas Microsoft ke aplikasi Anda. Yang disediakan oleh Microsoft.Identity.Web. Kemudian dikonfigurasi untuk masuk menggunakan platform identitas Microsoft berdasarkan informasi di file konfigurasi AzureAD bagian appsettings.json:

Kunci appsettings.json Deskripsi >
ClientId ID aplikasi (klien) aplikasi yang terdaftar di portal Microsoft Azure.
Instance Titik akhir layanan token keamanan (STS) bagi pengguna untuk mengotentikasi. Nilai ini biasanya https://login.microsoftonline.com/, menunjukkan cloud publik Azure.
TenantId Nama penyewa anda atau ID penyewanya (GUID), atau umum untuk masuk pengguna dengan akun kantor atau sekolah atau akun pribadi Microsoft.

EnableTokenAcquisitionToCallDownstreamApiMetode ini memungkinkan aplikasi Anda memperoleh token untuk memanggil API web yang dilindungi. AddMicrosoftGraph memungkinkan pengontrol atau halaman Razor Anda untuk mendapatkan manfaat langsung GraphServiceClient (dengan injeksi dependensi) AddInMemoryTokenCaches dan metode ini memungkinkan aplikasi Anda mendapatkan manfaat dari cache token.

Configure()Metode ini berisi dua metode penting, app.UseAuthentication() dan app.UseAuthorization(), yang memungkinkan fungsionalitas bernama mereka. Juga di Configure() metode ini, Anda harus mendaftarkan rute Microsoft Identity Web dengan setidaknya satu panggilan ke endpoints.MapControllerRoute() atau panggilan ke endpoints.MapControllers().

app.UseAuthentication();
app.UseAuthorization();

app.UseEndpoints(endpoints =>
{

    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
});

// endpoints.MapControllers(); // REQUIRED if MapControllerRoute() isn't called.

Melindungi pengontrol atau metode pengontrol

Anda dapat melindungi pengontrol atau metodenya dengan menerapkan [Authorize] atribut ke kelas pengontrol atau satu atau beberapa metodenya. [Authorize]Atribut ini membatasi akses dengan hanya mengizinkan pengguna terautentikasi. Jika pengguna belum diautentikasi, tantangan autentikasi dapat mulai mengakses pengontrol. Di mulai cepat ini, cakupan dibaca dari file konfigurasi:

[AuthorizeForScopes(ScopeKeySection = "DownstreamApi:Scopes")]
public async Task<IActionResult> Index()
{
    var user = await _graphServiceClient.Me.GetAsync();
    ViewData["ApiResult"] = user?.DisplayName;

    return View();
}

Bantuan dan dukungan

Jika Anda memerlukan bantuan, ingin melaporkan masalah, atau ingin mempelajari opsi dukungan, lihat Bantuan dan dukungan bagi pengembang.

Langkah berikutnya

Repossikan GitHub yang berisi sampel kode ASP.NET Core yang direferensikan dalam mulai cepat ini mencakup instruksi dan lebih banyak sampel kode yang menunjukkan kepada Anda cara:

  • Menambahkan autentikasi ke aplikasi web ASP.NET Core baru
  • Memanggil Microsoft Graph, Microsoft API lainnya, atau API web Anda sendiri
  • Tambahkan otorisasi
  • Masuk pengguna di cloud nasional atau dengan identitas sosial