Udostępnij za pośrednictwem


Jak skonfigurować aplikacje demona wywołujące internetowe interfejsy API

Dowiedz się, jak skonfigurować kod dla aplikacji demona, która wywołuje internetowe interfejsy API.

Biblioteki firmy Microsoft obsługujące aplikacje demona

Następujące biblioteki firmy Microsoft obsługują aplikacje demona:

Język/struktura Projekt w dniu
GitHub
Pakiet Coraz
pracę
Logowanie użytkowników Dostęp do interfejsów API sieci Web Ogólnie dostępne (ogólna dostępność) lub
Publiczna wersja zapoznawcza1
.NET MSAL.NET Microsoft.Identity.Client Szybki start Biblioteka nie może zażądać tokenów identyfikatorów logowania użytkownika. Biblioteka może żądać tokenów dostępu dla chronionych internetowych interfejsów API. Ogólna dostępność
Java MSAL4J msal4j Biblioteka nie może zażądać tokenów identyfikatorów logowania użytkownika. Biblioteka może żądać tokenów dostępu dla chronionych internetowych interfejsów API. Ogólna dostępność
Węzeł Węzeł BIBLIOTEKI MSAL msal-node Szybki start Biblioteka nie może zażądać tokenów identyfikatorów logowania użytkownika. Biblioteka może żądać tokenów dostępu dla chronionych internetowych interfejsów API. Ogólna dostępność
Python MSAL Python msal-python Szybki start Biblioteka nie może zażądać tokenów identyfikatorów logowania użytkownika. Biblioteka może żądać tokenów dostępu dla chronionych internetowych interfejsów API. Ogólna dostępność

1 Uniwersalne postanowienia licencyjne dotyczące usług online mają zastosowanie do bibliotek w publicznej wersji zapoznawczej.

Konfigurowanie urzędu

Aplikacje demona używają uprawnień aplikacji, a nie uprawnień delegowanych. Dlatego ich obsługiwany typ konta nie może być kontem w żadnym katalogu organizacyjnym ani żadnym osobistym kontem Microsoft (na przykład Skype, Xbox, Outlook.com). Nie ma administratora dzierżawy, aby udzielić zgody na aplikację demona dla konta osobistego Microsoft. Musisz wybrać konta w mojej organizacji lub kontach w dowolnej organizacji.

Urząd określony w konfiguracji aplikacji powinien być dzierżawiony (określanie identyfikatora dzierżawy lub nazwy domeny skojarzonej z organizacją).

Nawet jeśli chcesz podać wielodostępne narzędzie, należy użyć identyfikatora dzierżawy lub nazwy domeny, a nie common tego organizations przepływu, ponieważ usługa nie może niezawodnie wnioskować, której dzierżawy należy użyć.

Konfigurowanie i tworzenie wystąpienia aplikacji

W bibliotekach MSAL poświadczenia klienta (klucz tajny lub certyfikat) są przekazywane jako parametr poufnej konstrukcji aplikacji klienckiej.

Ważne

Nawet jeśli aplikacja jest aplikacją konsolową, która działa jako usługa, jeśli jest to aplikacja demona, musi być poufnej aplikacji klienckiej.

Plik konfiguracji

Plik konfiguracji definiuje:

  • Wystąpienie chmury i identyfikator dzierżawy, które razem tworzą urząd.
  • Identyfikator klienta uzyskany z rejestracji aplikacji.
  • Wpis tajny klienta lub certyfikat.

Oto przykład definiowania konfiguracji w pliku appsettings.json. Ten przykład jest pobierany z przykładu kodu demona konsoli platformy .NET w witrynie 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]"
            }
        ]
    }
}

Należy podać certyfikat zamiast klucza tajnego klienta lub poświadczenia federacji tożsamości obciążenia.

Tworzenie wystąpienia aplikacji MSAL

Aby utworzyć wystąpienie aplikacji MSAL, dodaj, odwołaj się lub zaimportuj pakiet MSAL (w zależności od języka).

Konstrukcja różni się w zależności od tego, czy używasz wpisów tajnych klienta, czy certyfikatów (lub, jako zaawansowanego scenariusza, podpisanych asercji).

Odwołanie do pakietu

Odwołanie do pakietu MSAL w kodzie aplikacji.

Dodaj pakiet NuGet Microsoft.Identity.Web.TokenAcquisition do aplikacji. Alternatywnie, jeśli chcesz wywołać program Microsoft Graph, dodaj pakiet Microsoft.Identity.Web.GraphServiceClient . Projekt może być następujący. Plik appsettings.json należy skopiować do katalogu wyjściowego.

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

W pliku Program.cs dodaj dyrektywę using w kodzie, aby odwołać się do pliku Microsoft.Identity.Web.

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

Tworzenie wystąpienia poufnej aplikacji klienckiej przy użyciu wpisu tajnego klienta

Oto kod umożliwiający utworzenie wystąpienia poufnej aplikacji klienckiej przy użyciu wpisu tajnego klienta:

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

            // ...
        }
    }

Konfiguracja jest odczytywana z appsettings.json:

Tworzenie wystąpienia poufnej aplikacji klienckiej przy użyciu certyfikatu klienta

Oto kod umożliwiający skompilowanie aplikacji przy użyciu certyfikatu:

Sam kod jest dokładnie taki sam. Certyfikat jest opisany w konfiguracji. Istnieje wiele sposobów uzyskania certyfikatu. Aby uzyskać szczegółowe informacje, zobacz https://aka.ms/ms-id-web-certificates. Poniżej przedstawiono sposób uzyskiwania certyfikatu z usługi KeyVault. Delegowanie tożsamości firmy Microsoft do domyślnej usługi Azure IdentityAzureCredential i używanej tożsamości zarządzanej, gdy jest dostępna do uzyskania dostępu do certyfikatu z usługi KeyVault. Możesz debugować aplikację lokalnie, ponieważ następnie używa poświadczeń dewelopera.

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

Scenariusz zaawansowany: tworzenie wystąpienia poufnej aplikacji klienckiej przy użyciu asercji klienta

Oprócz używania klucza tajnego klienta lub certyfikatu poufne aplikacje klienckie mogą również udowodnić swoją tożsamość przy użyciu asercji klientów. Aby uzyskać szczegółowe informacje, zobacz CredentialDescription (Opis poświadczeń ).

Następne kroki

Przejdź do następnego artykułu w tym scenariuszu Uzyskiwanie tokenu dla aplikacji.