Cara mengonfigurasi aplikasi daemon yang memanggil API web

Pelajari cara mengonfigurasi kode untuk aplikasi daemon Anda yang memanggil API web.

Pustaka Microsoft yang mendukung aplikasi daemon

Pustaka Microsoft berikut mendukung aplikasi daemon:

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 Mulai Cepat Pustaka tidak dapat meminta token ID untuk login pengguna. Pustaka dapat meminta token akses untuk API web yang dilindungi. GA
Java MSAL4J msal4j Pustaka tidak dapat meminta token ID untuk login pengguna. Pustaka dapat meminta token akses untuk API web yang dilindungi. GA
Simpul MSAL Node msal-node Mulai Cepat Pustaka tidak dapat meminta token ID untuk login pengguna. Pustaka dapat meminta token akses untuk API web yang dilindungi. GA
Python MSAL Python msal-python Mulai Cepat Pustaka tidak dapat meminta token ID untuk login pengguna. Pustaka dapat meminta token akses untuk API web yang dilindungi. GA

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

Mengonfigurasi otoritas

Aplikasi Daemon menggunakan izin aplikasi alih-alih terdelegasi. Sehingga jenis akun mereka yang didukung tidak dapat menjadi akun di direktori organisasi atau akun Microsoft pribadi mana pun (contohnya, Skype, Xbox, Outlook.com). Tidak ada admin penyewa untuk memberikan persetujuan ke aplikasi daemon untuk akun pribadi Microsoft. Anda perlu memilih akun di organisasi atau akun saya di organisasi mana pun.

Otoritas yang ditentukan dalam konfigurasi aplikasi harus dihuni (menentukan ID penyewa atau nama domain yang terkait dengan organisasi Anda).

Bahkan jika Anda ingin menyediakan alat multipenyewa, Anda harus menggunakan ID penyewa atau nama domain, dan tidakcommon atau organizations dengan alur ini, karena layanan tidak dapat menyimpulkan penyewa mana yang harus digunakan.

Mengonfigurasi dan membuat instans aplikasi

Di pustaka MSAL, kredensial klien (rahasia atau sertifikat) diteruskan sebagai parameter konstruksi aplikasi klien rahasia.

Penting

Bahkan jika aplikasi Anda adalah aplikasi konsol yang dijalankan sebagai layanan, jika merupakan aplikasi daemon, maka perlu menjadi aplikasi klien rahasia.

File konfigurasi

File konfigurasi mendefinisikan:

  • Instans cloud dan ID penyewa, yang bersama-sama membentuk otoritas.
  • ID klien yang didapatkan dari pendaftaran aplikasi.
  • Baik sertifikat atau rahasia klien.

Berikut adalah contoh mendefinisikan konfigurasi dalam file appsettings.json. Contoh ini diambil dari sampel kode daemon konsol .NET di GitHub.

{
    "AzureAd": {
        "Instance": "https://login.microsoftonline.com/",
        "TenantId": "[Enter here the tenantID or domain name for your Azure AD tenant]",
        "ClientId": "[Enter here the ClientId for your application]",
        "ClientCredentials": [
            {
                "SourceType": "ClientSecret",
                "ClientSecret": "[Enter here a client secret for your application]"
            }
        ]
    }
}

Anda memberikan sertifikat alih-alih rahasia klien, atau kredensial federasi identitas beban kerja.

Membuat instans aplikasi MSAL

Untuk membuat instans aplikasi MSAL, tambahkan, rujuk, atau impor paket MSAL (tergantung pada bahasanya).

Konstruksinya berbeda, tergantung jika Anda menggunakan rahasia klien atau sertifikat (atau, sebagai skenario tingkat lanjut, pernyataan yang ditandatangani).

Merujuk paket

Rujuk paket MSAL dalam kode aplikasi Anda.

Tambahkan paket NuGet Microsoft.Identity.Web.TokenAcquisition ke aplikasi Anda. Atau, jika Anda ingin memanggil Microsoft Graph, tambahkan paket Microsoft.Identity.Web.GraphServiceClient . Proyek Anda bisa sebagai berikut. File appsettings.json perlu disalin ke direktori output.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <RootNamespace>daemon_console</RootNamespace>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Identity.Web.GraphServiceClient" Version="2.12.2" />
  </ItemGroup>

  <ItemGroup>
    <None Update="appsettings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

Dalam file Program.cs, tambahkan using direktif dalam kode Anda untuk mereferensikan Microsoft.Identity.Web.

using Microsoft.Identity.Abstractions;
using Microsoft.Identity.Web;

Membuat instans aplikasi klien rahasia dengan rahasia klien

Ini adalah kode untuk membuat instans aplikasi klien rahasia dengan rahasia klien:

   class Program
    {
        static async Task Main(string[] _)
        {
            // Get the Token acquirer factory instance. By default it reads an appsettings.json
            // file if it exists in the same folder as the app (make sure that the 
            // "Copy to Output Directory" property of the appsettings.json file is "Copy if newer").
            TokenAcquirerFactory tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();

            // Configure the application options to be read from the configuration
            // and add the services you need (Graph, token cache)
            IServiceCollection services = tokenAcquirerFactory.Services;
            services.AddMicrosoftGraph();
            // By default, you get an in-memory token cache.
            // For more token cache serialization options, see https://aka.ms/msal-net-token-cache-serialization

            // Resolve the dependency injection.
            var serviceProvider = tokenAcquirerFactory.Build();

            // ...
        }
    }

Konfigurasi dibaca dari appsettings.json:

Membuat instans aplikasi klien rahasia dengan sertifikat klien

Ini adalah kode untuk membangun aplikasi dengan sertifikat:

Kode itu sendiri persis sama. Sertifikat dijelaskan dalam konfigurasi. Ada banyak cara untuk mendapatkan sertifikat. Untuk detailnya lihat https://aka.ms/ms-id-web-certificates. Berikut adalah cara yang akan Anda lakukan untuk mendapatkan sertifikat Anda dari KeyVault. Identitas Microsoft mendelegasikan ke DefaultAzureCredential Azure Identity, dan menggunakan Identitas terkelola saat tersedia untuk mengakses sertifikat dari KeyVault. Anda dapat men-debug aplikasi Anda secara lokal karena kemudian menggunakan kredensial pengembang Anda.

  "ClientCredentials": [
      {
        "SourceType": "KeyVault",
        "KeyVaultUrl": "https://yourKeyVaultUrl.vault.azure.net",
        "KeyVaultCertificateName": "NameOfYourCertificate"
      }

Skenario tingkat lanjut: Membuat instans aplikasi klien rahasia dengan pernyataan klien

Selain menggunakan rahasia atau sertifikat klien, aplikasi klien rahasia juga dapat membuktikan identitas mereka dengan menggunakan pernyataan klien. Lihat CredentialDescription untuk detailnya.

Langkah berikutnya

Beralih ke artikel berikutnya dalam skenario ini, Peroleh token untuk aplikasi.