Daemon-apps configureren die web-API's aanroepen

Meer informatie over het configureren van de code voor uw daemontoepassing die web-API's aanroept.

Microsoft-bibliotheken die daemon-apps ondersteunen

De volgende Microsoft-bibliotheken ondersteunen daemon-apps:

Taal/framework Project over
GitHub
Pakket Aan de
slag
Gebruikers aanmelden Toegang krijgen tot web-API's Algemeen beschikbaar (GA) of
Openbare preview1
.NET MSAL.NET Microsoft.Identity.Client Snelstartgids Bibliotheek kan geen id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. GA
Java MSAL4J msal4j Bibliotheek kan geen id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. GA
Knooppunt MSAL-knooppunt msal-node Snelstartgids Bibliotheek kan geen id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. GA
Python MSAL Python msal-python Snelstartgids Bibliotheek kan geen id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. GA

1Universele licentievoorwaarden voor onlineservices zijn van toepassing op bibliotheken in openbare preview.

De instantie configureren

Daemon-toepassingen gebruiken toepassingsmachtigingen in plaats van gedelegeerde machtigingen. Het ondersteunde accounttype kan dus geen account zijn in een organisatiedirectory of een persoonlijk Microsoft-account (bijvoorbeeld Skype, Xbox, Outlook.com). Er is geen tenantbeheerder om toestemming te verlenen aan een daemontoepassing voor een persoonlijk Microsoft-account. U moet accounts kiezen in mijn organisatie of accounts in elke organisatie.

De instantie die is opgegeven in de toepassingsconfiguratie moet een tenant zijn (waarbij een tenant-id of een domeinnaam wordt opgegeven die is gekoppeld aan uw organisatie).

Zelfs als u een hulpprogramma voor meerdere tenants wilt opgeven, moet u een tenant-id of domeinnaam gebruiken en nietcommon of organizations met deze stroom, omdat de service niet betrouwbaar kan afleiden welke tenant moet worden gebruikt.

De toepassing configureren en starten

In MSAL-bibliotheken worden de clientreferenties (geheim of certificaat) doorgegeven als een parameter van de bouw van vertrouwelijke clienttoepassingen.

Belangrijk

Zelfs als uw toepassing een consoletoepassing is die als een service wordt uitgevoerd of een daemontoepassing is, moet het een vertrouwelijke clienttoepassing zijn.

Configuratiebestand

Het configuratiebestand definieert:

  • Het cloudexemplaar en de tenant-id, die samen de instantie vormen.
  • De client-id die u hebt verkregen uit de registratie van de toepassing.
  • Een clientgeheim of een certificaat.

Hier volgt een voorbeeld van het definiëren van de configuratie in een appsettings.json-bestand. Dit voorbeeld is afkomstig uit het codevoorbeeld van de .NET-console-daemon op 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]"
            }
        ]
    }
}

U geeft een certificaat op in plaats van het clientgeheim of de federatiereferenties van de workloadidentiteit.

De MSAL-toepassing starten

Als u de MSAL-toepassing wilt starten, voegt u het MSAL-pakket toe, verwijst u ernaar of importeert u het (afhankelijk van de taal).

De constructie is verschillend, afhankelijk van of u clientgeheimen of certificaten gebruikt (of, als een geavanceerd scenario, ondertekende asserties).

Naar het pakket verwijzen

Verwijs naar het MSAL-pakket in uw toepassingscode.

Voeg het NuGet-pakket Microsoft.Identity.Web.TokenAcquisition toe aan uw toepassing. Als u Microsoft Graph wilt aanroepen, kunt u ook het pakket Microsoft.Identity.Web.GraphServiceClient toevoegen. Uw project kan als volgt zijn. Het appsettings.json-bestand moet worden gekopieerd naar de uitvoermap.

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

Voeg in het bestand Program.cs een using instructie toe aan uw code om te verwijzen naar Microsoft.Identity.Web.

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

De vertrouwelijke clienttoepassing starten met een clientgeheim

U kunt met de volgende code de vertrouwelijke clienttoepassing starten met een clientgeheim:

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

            // ...
        }
    }

De configuratie wordt gelezen uit de appsettings.json:

De vertrouwelijke clienttoepassing starten met een clientcertificaat

Dit is de code voor het bouwen van een toepassing met een certificaat:

De code zelf is precies hetzelfde. Het certificaat wordt beschreven in de configuratie. Er zijn veel manieren om het certificaat op te halen. Zie voor meer informatie https://aka.ms/ms-id-web-certificates. U kunt als volgt uw certificaat ophalen uit KeyVault. Microsoft-identiteit delegeert naar de DefaultAzureCredential van Azure Identity en gebruikte beheerde identiteit wanneer deze beschikbaar is voor toegang tot het certificaat vanuit KeyVault. U kunt lokaal fouten in uw toepassing opsporen, omdat deze vervolgens gebruikmaakt van uw referenties voor ontwikkelaars.

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

Geavanceerd scenario: De vertrouwelijke clienttoepassing starten met clientasserties

Naast het gebruik van een clientgeheim of certificaat kunnen vertrouwelijke clienttoepassingen ook hun identiteit bewijzen met behulp van clientverklaringen. Zie CredentialDescription voor meer informatie.

Volgende stappen

Ga verder met het volgende artikel in dit scenario: Een token ophalen voor de app.