Sdílet prostřednictvím


Konfigurace aplikací démonů, které volají webová rozhraní API

Zjistěte, jak nakonfigurovat kód pro aplikaci démona, která volá webová rozhraní API.

Knihovny Microsoftu podporující aplikace démona

Následující knihovny Microsoftu podporují aplikace démona:

Jazyk / architektura Project on
GitHub
Balíček Dostání
z těchto možností
Přihlášení uživatelů Přístup k webovým rozhraním API Obecná dostupnost (GA) nebo
Public Preview1
.NET MSAL.NET Microsoft.Identity.Client Rychlý start Knihovna nemůže požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. GA
Java MSAL4J msal4j Knihovna nemůže požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. GA
Uzel Uzel MSAL msal-node Rychlý start Knihovna nemůže požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. GA
Python MSAL Python msal-python Rychlý start Knihovna nemůže požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. GA

1 Univerzální licenční podmínky pro online služby se vztahují na knihovny ve verzi Public Preview.

Konfigurace autority

Aplikace démona používají oprávnění aplikace místo delegovaných oprávnění. Podporovaný typ účtu proto nemůže být účtem v žádném organizačním adresáři ani v žádném osobním účtu Microsoft (například Skype, Xbox, Outlook.com). Neexistuje žádný správce tenanta, který by udělil souhlas s aplikací démona pro osobní účet Microsoft. Potřebujete zvolit účty v mé organizaci nebo účtech v libovolné organizaci.

Autorita zadaná v konfiguraci aplikace by měla být tenantována (zadání ID tenanta nebo názvu domény přidruženého k vaší organizaci).

I když chcete poskytnout nástroj pro více tenantů, měli byste použít ID tenanta nebo název domény, a ne common nebo organizations s tímto tokem, protože služba nemůže spolehlivě odvodit, který tenant by se měl použít.

Konfigurace a vytvoření instance aplikace

V knihovnách MSAL se přihlašovací údaje klienta (tajný klíč nebo certifikát) předávají jako parametr výstavby důvěrných klientských aplikací.

Důležité

I když je vaše aplikace konzolovou aplikací, která běží jako služba, pokud se jedná o aplikaci démona, musí to být důvěrná klientská aplikace.

Konfigurační soubor

Konfigurační soubor definuje:

  • Cloudová instance a ID tenanta, které společně tvoří autoritu.
  • ID klienta, které jste získali z registrace aplikace.
  • Tajný klíč klienta nebo certifikát.

Tady je příklad definování konfigurace v souboru appsettings.json. Tento příklad pochází z ukázky kódu démona konzoly .NET na GitHubu.

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

Místo tajného klíče klienta nebo přihlašovacích údajů federace identit úloh zadáte certifikát.

Vytvoření instance aplikace MSAL

Vytvoření instance aplikace MSAL, přidání, odkaz nebo import balíčku MSAL (v závislosti na jazyce).

Konstrukce se liší v závislosti na tom, jestli používáte tajné kódy klienta nebo certifikáty (nebo jako pokročilý scénář podepsané kontrolní výrazy).

Odkaz na balíček

Odkazujte na balíček MSAL v kódu aplikace.

Přidejte do aplikace balíček NuGet Microsoft.Identity.Web.TokenAcquisition . Případně pokud chcete volat Microsoft Graph, přidejte balíček Microsoft.Identity.Web.GraphServiceClient . Projekt může být následující. Soubor appsettings.json je potřeba zkopírovat do výstupního adresáře.

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

Do souboru Program.cs přidejte do kódu direktivu using , která odkazuje na Microsoft.Identity.Web.

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

Vytvoření instance důvěrné klientské aplikace pomocí tajného klíče klienta

Tady je kód pro vytvoření instance důvěrné klientské aplikace tajným kódem 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();

            // ...
        }
    }

Konfigurace se načte z appsettings.json:

Vytvoření instance důvěrné klientské aplikace pomocí klientského certifikátu

Tady je kód pro sestavení aplikace s certifikátem:

Samotný kód je úplně stejný. Certifikát je popsaný v konfiguraci. Certifikát můžete získat mnoha způsoby. Podrobnosti najdete v tématu https://aka.ms/ms-id-web-certificates. Tady je postup, jak získat certifikát ze služby KeyVault. Identita Microsoftu deleguje na defaultAzureCredential služby Azure Identity a používá spravovanou identitu, pokud je k dispozici pro přístup k certifikátu z keyVaultu. Aplikaci můžete ladit místně, protože pak použije vaše přihlašovací údaje pro vývojáře.

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

Pokročilý scénář: Vytvoření instance důvěrné klientské aplikace pomocí klientských kontrolních výrazů

Kromě použití tajného klíče klienta nebo certifikátu můžou důvěrné klientské aplikace také prokázat svou identitu pomocí klientských kontrolních výrazů. Podrobnosti najdete v tématu CredentialDescription .

Další kroky

Přejděte k dalšímu článku v tomto scénáři a získejte token aplikace.