Delen via


Hoe daemon-diensten te configureren die web-API's gebruiken

Van toepassing op: Groene cirkel met een wit vinkje. Werknemershuurders Witte cirkel met een grijs X-symbool. Externe huurders (meer informatie)

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 gaat over
GitHub
Pakket Verkrijgen
begonnen
Gebruikers aanmelden Toegang krijgen tot web-API's Beschikbaar algemeen (GA) of
Openbare voorvertoning1
.NET MSAL.NET Microsoft.Identity.Client Snelstart Bibliotheek kan geen id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. Algemene Vergadering
Java MSAL4J msal4j Bibliotheek kan geen id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. Algemene Vergadering
Knooppunt MSAL-knooppunt msal-node Snelstart Bibliotheek kan geen id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. Algemene Vergadering
Python MSAL Python msal-python Snelstart Bibliotheek kan geen id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. Algemene Vergadering

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 kiezen voor accounts in mijn organisatie of accounts in een willekeurige organisatie.

De instantie die is opgegeven in de toepassingsconfiguratie, moet de id van de ypur-tenant of een domeinnaam bevatten die is gekoppeld aan uw organisatie.

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

De toepassing configureren en starten

In Microsoft Authentication Libraries (MSAL) worden de clientreferenties (geheim of certificaat) doorgegeven als een parameter van de constructie van de vertrouwelijke clienttoepassing.

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 levert een certificaat aan in plaats van de clientgeheim of workload-identiteitsfederatie-referenties.

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;

Instantieer de vertrouwelijke clienttoepassing met een clientsleutel

Hier is de code om de vertrouwelijke cliënttoepassing te instantiëren met een cliëntgeheim:

   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:

Initialiseer de vertrouwelijke clienttoepassing 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 cliënt-toepassing instantiëren 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.