Web API'lerini çağıran daemon uygulamalarını yapılandırma

Web API'lerini çağıran daemon uygulamanızın kodunu yapılandırmayı öğrenin.

Daemon uygulamalarını destekleyen Microsoft kitaplıkları

Aşağıdaki Microsoft kitaplıkları daemon uygulamalarını destekler:

Dil / çerçeve Proje açık
GitHub
Paket Alma
birini seçin
Oturum açma kullanıcıları Web API'lerine erişme Genel kullanıma açık (GA) veya
Genel önizleme1
.NET MSAL.NET Microsoft.Identity.Client Hızlı Başlangıç Kitaplık, kullanıcı oturum açma işlemi için kimlik belirteci isteyemez. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyebilir. GA
Java MSAL4J msal4j Kitaplık, kullanıcı oturum açma işlemi için kimlik belirteci isteyemez. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyebilir. GA
Düğüm MSAL Düğümü msal-node Hızlı Başlangıç Kitaplık, kullanıcı oturum açma işlemi için kimlik belirteci isteyemez. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyebilir. GA
Python MSAL Python msal-python Hızlı Başlangıç Kitaplık, kullanıcı oturum açma işlemi için kimlik belirteci isteyemez. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyebilir. GA

1Çevrimiçi Hizmetler için Evrensel Lisans Koşulları, Genel önizlemedeki kitaplıklar için geçerlidir.

Yetkiliyi yapılandırma

Daemon uygulamaları, temsilci izinleri yerine uygulama izinlerini kullanır. Bu nedenle, desteklenen hesap türü herhangi bir kuruluş dizininde veya kişisel Microsoft hesabında (örneğin, Skype, Xbox, Outlook.com) bir hesap olamaz. Microsoft kişisel hesabı için bir daemon uygulamasına onay vermek için kiracı yöneticisi yoktur. Kuruluşumdaki hesapları veya herhangi bir kuruluştaki hesapları seçmeniz gerekiyor.

Uygulama yapılandırmasında belirtilen yetkili kiracılı olmalıdır (kiracı kimliği veya kuruluşunuzla ilişkilendirilmiş bir etki alanı adı belirtilmelidir).

Çok kiracılı bir araç sağlamak isteseniz bile, hizmet hangi kiracının kullanılması gerektiğini güvenilir bir şekilde çıkaramadığından, bu akışla değilcommon, kiracı kimliği veya organizations etki alanı adı kullanmalısınız.

Uygulamayı yapılandırma ve örneği oluşturma

MSAL kitaplıklarında, gizli istemci kimlik bilgileri (gizli veya sertifika) gizli istemci uygulaması oluşturma parametresi olarak geçirilir.

Önemli

Uygulamanız hizmet olarak çalışan bir konsol uygulaması olsa bile, bu bir daemon uygulamasıysa gizli bir istemci uygulaması olmalıdır.

Yapılandırma dosyası

Yapılandırma dosyası şunları tanımlar:

  • Birlikte yetkiliyi oluşturan bulut örneği ve kiracı kimliği.
  • Uygulama kaydından edindiğiniz istemci kimliği.
  • İstemci gizli dizisi veya sertifika.

Aşağıda, appsettings.json dosyasında yapılandırmayı tanımlama örneği verilmiştır. Bu örnek GitHub'da .NET konsol daemon kodu örneğinden alınmıştır.

{
    "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]"
            }
        ]
    }
}

İstemci gizli dizisi veya iş yükü kimliği federasyon kimlik bilgileri yerine bir sertifika sağlarsınız.

MSAL uygulamasının örneğini oluşturma

MSAL uygulamasının örneğini açmak için MSAL paketini ekleyin, başvurun veya içeri aktarın (dile bağlı olarak).

yapı, istemci gizli dizilerini veya sertifikalarını (veya gelişmiş bir senaryo olarak imzalı onayları) kullanıp kullanmadığınıza bağlı olarak farklıdır.

Pakete başvurma

Uygulama kodunuzda MSAL paketine başvurun.

Uygulamanıza Microsoft.Identity.Web.TokenAcquisition NuGet paketini ekleyin. Alternatif olarak, Microsoft Graph'ı çağırmak istiyorsanız Microsoft.Identity.Web.GraphServiceClient paketini ekleyin. Projeniz aşağıdaki gibi olabilir. appsettings.json dosyasının çıkış dizinine kopyalanması gerekir.

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

Program.cs dosyasında, Microsoft.Identity.Web'e başvurmak için kodunuza bir using yönerge ekleyin.

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

Gizli istemci uygulamasının örneğini bir istemci gizli dizisiyle oluşturma

Gizli istemci uygulamasının örneğini bir istemci gizli dizisiyle oluşturmak için kod aşağıdadır:

   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();

            // ...
        }
    }

Yapılandırma appsettings.json okunur:

Gizli istemci uygulamasının örneğini bir istemci sertifikasıyla oluşturma

Sertifikayla uygulama derleme kodu aşağıdadır:

Kodun kendisi tamamen aynıdır. Sertifika yapılandırmada açıklanmıştır. Sertifikayı almanın birçok yolu vardır. Ayrıntılar için bkz. https://aka.ms/ms-id-web-certificates. Sertifikanızı KeyVault'tan almak için şunları yapabilirsiniz. Microsoft identity, Azure Identity'in DefaultAzureCredential'ını temsil eder ve KeyVault'tan sertifikaya erişmek için kullanılabilir olduğunda Yönetilen kimliği kullanır. Uygulamanızda, geliştirici kimlik bilgilerinizi kullandığından yerel olarak hata ayıklayabilirsiniz.

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

Gelişmiş senaryo: Gizli istemci uygulamasını istemci onaylarıyla oluşturma

Gizli istemci uygulamaları, istemci gizli dizisini veya sertifikayı kullanmanın yanı sıra istemci onaylarını kullanarak da kimliklerini kanıtlayabilir. Ayrıntılar için bkz . CredentialDescription .

Sonraki adımlar