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

Şunlar için geçerlidir: Aşağıdaki içeriğin iş gücü kiracıları için geçerli olduğunu gösteren beyaz onay işareti simgesine sahip yeşil daire. İş gücü kiracıları (daha fazla bilgi edinin)

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 (İngilizce)
Paket Alma
Başladı
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ıç Kütüphane, kullanıcının oturum açması için kimlik belirteçleri isteyemez. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyebilir. Georgia
Java MSAL4J msal4j Kitaplık, kullanıcının oturum açması için kimlik belirteci isteyemez. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyebilir. Georgia
Düğüm MSAL Düğümü msal-node Hızlı Başlangıç Kitaplık, kullanıcının oturum açması için ID belirteçleri isteyemez. Kütüphane, korumalı web API'leri için erişim belirteçleri isteyebilir. Georgia
Piton MSAL Python msal-python Hızlı Başlangıç Kütüphane, kullanıcının oturum açması için kimlik belirteçleri isteyemez. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyebilir. Georgia

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 verebilecek bir kiracı yöneticisi yoktur. Kuruluşumdaki hesapları veya herhangi bir kuruluştaki hesapları seçmeniz gerekiyor.

Uygulama yapılandırmasında belirtilen yetki, kiracı kimliğinizi veya kuruluşunuzla ilişkilendirilmiş bir etki alanı adını içermelidir.

Çok kiracılı bir araç sağlamak isteseniz bile, bu akışta değilcommon veya organizations, bir kiracı kimliği ya da etki alanı adı kullanmalısınız; çünkü hizmet hangi kiracının kullanılması gerektiğini güvenilir biçimde belirleyemez.

Uygulamayı yapılandırın ve örneğini oluşturun

Microsoft Kimlik Doğrulama Kitaplıkları'nda (MSAL), istemci kimlik bilgileri (gizli veya sertifika), gizli istemci uygulaması oluşturma işleminin 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 otoriteyi oluşturan bulut örneği ve kiracı kimliği.
  • Uygulama kaydından edindiğiniz istemci kimliği.
  • Ya istemci gizli anahtarı ya da sertifika.

Aşağıda, appsettings.json örnek yapılandırma 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 sırrı veya iş yükü kimliği federasyonu kimlik bilgileri yerine bir sertifika sunarsınız.

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

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ılandırma, istemci parolaları veya sertifikaları (ya da gelişmiş bir senaryoda imzalı beyanlar) kullanmanıza bağlı olarak farklılık gösterir.

Pakete başvurun

Uygulama kodunuza MSAL paketini ekleyin.

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ı bir istemci parolasıyla örnekleyin

İstemci parolasıyla gizli istemci uygulamasının örneğini oluşturmak için gereken kod aşağıdadır:

Aşağıdaki örnek, Microsoft.Identity.Web kullanarak bir istemci gizli anahtarıyla gizli istemci uygulamasını oluşturur:

   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 dosyasından okunur:

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

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

Uygulama oluşturma kodu, istemci parolası örneğindekiyle aynıdır. Tek fark, sertifikanın bir gizli bilgi yerine yapılandırmada tanımlanmasıdır. Sertifikayı almanın birçok yolu vardır. Ayrıntılar için bkz. Microsoft Identity Web ile sertifikaları kullanma. Aşağıdaki yapılandırma örneği, sertifikanızı Azure Key Vault’tan nasıl alacağınızı gösterir. 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. DefaultAzureCredential daha sonra geliştirici kimlik bilgilerinizi kullandığından uygulamanızın hatalarını yerel olarak 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 beyanlarını kullanarak da kimliklerini kanıtlayabilir. Ayrıntılar için bkz . CredentialDescription .

Sonraki adımlar

Bu senaryoda uygulama için belirteç alma adlı sonraki makaleye geçin.