Dela via


Så här konfigurerar du daemonappar som anropar webb-API:er

Lär dig hur du konfigurerar koden för ditt daemonprogram som anropar webb-API:er.

Microsoft-bibliotek som stöder daemonappar

Följande Microsoft-bibliotek stöder daemon-appar:

Språk/ramverk Projekt på
GitHub
Paket
komma igång
Logga in användare Åtkomst till webb-API:er Allmänt tillgänglig (GA) eller
Offentlig förhandsversion1
.NET MSAL.NET Microsoft.Identity.Client Snabbstart Biblioteket kan inte begära ID-token för användarinloggning. Biblioteket kan begära åtkomsttoken för skyddade webb-API:er. Allmän tillgänglighet
Java MSAL4J msal4j Biblioteket kan inte begära ID-token för användarinloggning. Biblioteket kan begära åtkomsttoken för skyddade webb-API:er. Allmän tillgänglighet
Nod MSAL-nod msal-node Snabbstart Biblioteket kan inte begära ID-token för användarinloggning. Biblioteket kan begära åtkomsttoken för skyddade webb-API:er. Allmän tillgänglighet
Python MSAL Python msal-python Snabbstart Biblioteket kan inte begära ID-token för användarinloggning. Biblioteket kan begära åtkomsttoken för skyddade webb-API:er. Allmän tillgänglighet

1Universella licensvillkor för onlinetjänster gäller för bibliotek i offentlig förhandsversion.

Konfigurera utfärdaren

Daemon-program använder programbehörigheter i stället för delegerade behörigheter. Därför kan deras kontotyp som stöds inte vara ett konto i någon organisationskatalog eller något personligt Microsoft-konto (till exempel Skype, Xbox Outlook.com). Det finns ingen klientorganisationsadministratör som beviljar medgivande till ett daemonprogram för ett personligt Microsoft-konto. Du måste välja konton i min organisation eller konton i någon organisation.

Den utfärdare som anges i programkonfigurationen ska vara klientorganisation (ange ett klient-ID eller ett domännamn som är associerat med din organisation).

Även om du vill tillhandahålla ett verktyg för flera klienter bör du använda ett klientorganisations-ID eller domännamn, och intecommon eller organizations med det här flödet, eftersom tjänsten inte på ett tillförlitligt sätt kan härleda vilken klientorganisation som ska användas.

Konfigurera och instansiera programmet

I MSAL-bibliotek skickas klientautentiseringsuppgifterna (hemligheten eller certifikatet) som en parameter för den konfidentiella klientprogramkonstruktionen.

Viktigt!

Även om ditt program är ett konsolprogram som körs som en tjänst måste det vara ett konfidentiellt klientprogram om det är ett daemonprogram.

Konfigurationsfil

Konfigurationsfilen definierar:

  • Molninstansen och klient-ID:t, som tillsammans utgör utfärdaren.
  • Det klient-ID som du fick från programregistreringen.
  • Antingen en klienthemlighet eller ett certifikat.

Här är ett exempel på hur du definierar konfigurationen i en appsettings.json-fil . Det här exemplet är hämtat från daemonkodexemplet för .NET-konsolen på 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]"
            }
        ]
    }
}

Du anger ett certifikat i stället för klienthemligheten eller autentiseringsuppgifter för arbetsbelastningsidentitetsfederation .

Instansiera MSAL-programmet

Om du vill instansiera MSAL-programmet lägger du till, refererar till eller importerar MSAL-paketet (beroende på språk).

Konstruktionen skiljer sig beroende på om du använder klienthemligheter eller certifikat (eller, som ett avancerat scenario, signerade intyg).

Referera till paketet

Referera till MSAL-paketet i programkoden.

Lägg till NuGet-paketet Microsoft.Identity.Web.TokenAcquisition i ditt program. Om du vill anropa Microsoft Graph kan du också lägga till paketet Microsoft.Identity.Web.GraphServiceClient . Projektet kan vara följande. Den appsettings.json filen måste kopieras till utdatakatalogen.

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

I filen Program.cs lägger du till ett using direktiv i koden för att referera till Microsoft.Identity.Web.

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

Instansiera det konfidentiella klientprogrammet med en klienthemlighet

Här är koden för att instansiera det konfidentiella klientprogrammet med en klienthemlighet:

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

            // ...
        }
    }

Konfigurationen läse från appsettings.json:

Instansiera det konfidentiella klientprogrammet med ett klientcertifikat

Här är koden för att skapa ett program med ett certifikat:

Själva koden är exakt densamma. Certifikatet beskrivs i konfigurationen. Det finns många sätt att hämta certifikatet. Mer information finns i https://aka.ms/ms-id-web-certificates. Så här gör du för att hämta certifikatet från KeyVault. Microsoft-identitet delegerar till Azure Identitys DefaultAzureCredential och använde hanterad identitet när den är tillgänglig för åtkomst till certifikatet från KeyVault. Du kan felsöka ditt program lokalt eftersom det sedan använder dina autentiseringsuppgifter för utvecklare.

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

Avancerat scenario: Instansiera det konfidentiella klientprogrammet med klientkontroller

Förutom att använda en klienthemlighet eller ett certifikat kan även konfidentiella klientprogram bevisa sin identitet med hjälp av klientkontroller. Mer information finns i CredentialDescription .

Nästa steg

Gå vidare till nästa artikel i det här scenariot, Hämta en token för appen.