Bagikan melalui


Cara mengonfigurasi aplikasi daemon yang memanggil API web

Berlaku untuk: Lingkaran hijau dengan simbol tanda centang putih. Penyewa Karyawan Lingkaran putih dengan simbol X abu-abu. Penyewa Eksternal (pelajari lebih lanjut)

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 tentang
GitHub
Paket Mendapatkan
memulai
Masuk sebagai pengguna Mengakses sebuah 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. Perpustakaan perangkat lunak dapat meminta token akses untuk API web yang terlindungi. Majelis Umum
Jawa MSAL4J msal4j Pustaka tidak dapat meminta token ID untuk login pengguna. Perpustakaan perangkat lunak dapat meminta token akses untuk API web yang terlindungi. Majelis Umum
Simpul MSAL Node msal-node Mulai Cepat Pustaka tidak dapat meminta token ID untuk login pengguna. Perpustakaan perangkat lunak dapat meminta token akses untuk API web yang terlindungi. Majelis Umum
Phyton MSAL Python msal-python Mulai Cepat Pustaka tidak dapat meminta token ID untuk login pengguna. Perpustakaan perangkat lunak dapat meminta token akses untuk API web yang terlindungi. Majelis Umum

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

Mengonfigurasi wewenang

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 administrator penyewa untuk memberikan persetujuan kepada aplikasi daemon untuk akun personal Microsoft. Anda perlu memilih akun di organisasi saya atau akun di organisasi mana pun.

Otoritas yang ditentukan dalam konfigurasi aplikasi harus menyertakan ID penyewa ypur atau nama domain yang terkait dengan organisasi Anda.

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

Mengonfigurasi dan membuat instans aplikasi

Di Microsoft Authentication Libraries (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.
  • 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.

Menginisialisasi 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 ke 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;

Menginstansiasi 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:

Menginstansiasi aplikasi rahasia klien dengan sertifikat klien

Ini adalah kode untuk membangun aplikasi dengan sertifikat:

Kode itu sendiri persis sama. Sertifikat dijabarkan 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: Menginisialisasi aplikasi klien rahasia dengan asersi 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.