Dela via


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

Gäller för: Grön cirkel med en vit bockmarkeringssymbol som anger att följande innehåll gäller för personalklienter. Personalklienter (läs mer)

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 om
GitHub
Paket Förvärva
komma igång
Logga in användare Åtkomst till webb-API:er Allmänt tillgänglig (GA) eller
Offentlig förhandsversion1
.NÄT 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 myndigheten

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 myndighet som specificerats i programkonfigurationen bör inkludera ditt 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 Microsoft Authentication Libraries (MSAL) 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 hyresgäst-ID:t, som tillsammans utgör auktoriteten.
  • 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 använder ett certifikat istället för att ange 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).

Hänvisa 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 ett klientlösenord

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äses från appsettings.json:

Instansiera den konfidentiella klientapplikationen 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änder hanterad identitet när den är tillgänglig för åtkomst till ett certifikat i 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 den konfidentiella klientapplikationen med klientintyg

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.