Condividi tramite


Come configurare le app daemon che chiamano le API Web

Si applica a: Cerchio verde con segno di spunta bianco. Tenant del personale Cerchio bianco con un simbolo X grigio. Tenant esterni (scopri di più)

Informazioni su come configurare il codice per l'applicazione daemon che chiama le API Web.

Librerie Microsoft che supportano le app daemon

Le librerie Microsoft seguenti supportano app daemon:

Linguaggio/struttura Progetto su
GitHub
Pacchetto Recupero
avviata
Accedi agli utenti Accedere alle API Web Disponibile a livello generale (GA) o
Anteprima pubblica1
.NET MSAL.NET Microsoft.Identity.Client Guida introduttiva La libreria non può richiedere token ID per l'accesso utente. La libreria può richiedere token di accesso per le API Web protette. Disponibilità generale
Giava MSAL4J msal4j La libreria non può richiedere token ID per l'accesso utente. La libreria può richiedere token di accesso per le API Web protette. Disponibilità generale
Nodo Nodo MSAL msal-node Guida introduttiva La libreria non può richiedere token ID per l'accesso utente. La libreria può richiedere token di accesso per le API Web protette. Disponibilità generale
Pitone MSAL Python msal-python Guida introduttiva La libreria non può richiedere token ID per l'accesso utente. La libreria può richiedere token di accesso per le API Web protette. Disponibilità generale

1 Lecondizioni di licenza universali per i servizi online si applicano alle librerie in anteprima pubblica.

Configurare l'autorizzazione

Le applicazioni daemon usano autorizzazioni dell'applicazione anziché autorizzazioni delegate. Quindi il tipo di account supportato non può essere un account in alcuna directory organizzativa o in qualsiasi account Microsoft personale (ad esempio, Skype, Xbox, Outlook.com). Non è previsto alcun amministratore tenant per concedere il consenso a un'applicazione daemon per un account personale Microsoft. È necessario scegliere gli account nella propria organizzazione o gli account in qualsiasi organizzazione.

L'autorità specificata nella configurazione dell'applicazione deve includere l'ID tenant ypur o un nome di dominio associato all'organizzazione.

Anche se si vuole fornire uno strumento multi-tenant, è consigliabile usare un ID tenant o un nome di dominio e noncommon o organizations con questo flusso, perché il servizio non può dedurre in modo affidabile quale tenant deve essere usato.

Configurare e creare un'istanza dell'applicazione

In Microsoft Authentication Libraries (MSAL), le credenziali client (segreto o certificato) vengono passate come parametro della costruzione di applicazioni client riservate.

Importante

Anche se l'applicazione è un'applicazione console che viene eseguita come servizio, deve essere un’applicazione client riservata se si tratta di un'applicazione daemon.

File di configurazione

Il file di configurazione definisce:

  • L'istanza cloud e l'ID tenant, che insieme costituiscono l'autorità.
  • L’ID client ottenuto dalla registrazione dell'applicazione.
  • Un segreto del client o un certificato.

Ecco un esempio di definizione della configurazione in un file appsettings.json. Questo esempio è tratto dall'esempio di codice del daemon della console .NET in 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]"
            }
        ]
    }
}

Si fornisce un certificato anziché il segreto client, o le credenziali di federazione delle identità dei carichi di lavoro.

Creare un'istanza dell'applicazione MSAL

Per creare un'istanza dell'applicazione MSAL, aggiungere, fare riferimento o importare il pacchetto MSAL (a seconda del linguaggio di programmazione).

La costruzione è diversa, a seconda che si usino segreti client o certificati (o asserzioni firmate in uno scenario avanzato).

Fare riferimento al pacchetto

Fare riferimento al pacchetto MSAL nel codice dell'applicazione.

Aggiungere il pacchetto NuGet Microsoft.Identity.Web.TokenAcquisition all'applicazione. In alternativa, se si vuole chiamare Microsoft Graph, aggiungere il pacchetto Microsoft.Identity.Web.GraphServiceClient. Il progetto potrebbe essere il seguente. Il file appsettings.json deve essere copiato nella directory di output.

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

Nel file Program.cs aggiungere una direttiva using nel codice per fare riferimento a Microsoft.Identity.Web.

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

Creare un'istanza dell'applicazione client riservata con un segreto del client

Ecco il codice per inizializzare l'applicazione client riservata con un segreto client.

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

            // ...
        }
    }

La configurazione viene letta da appsettings.json:

Istanziare l'applicazione client riservata con un certificato client

Ecco il codice per compilare un'applicazione con un certificato:

Il codice stesso è esattamente lo stesso. Il certificato è descritto nella configurazione. Esistono molti modi per ottenere il certificato. Per informazioni dettagliate, vedere https://aka.ms/ms-id-web-certificates. Ecco come ottenere il certificato da KeyVault. L’identità di Microsoft delega DefaultAzureCredential dell'identità di Azure e usa l'identità gestita, se disponibile, per accedere al certificato da KeyVault. È possibile eseguire il debug dell'applicazione in locale, perché usa le credenziali per sviluppatore.

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

Scenario avanzato: Istanziare l'applicazione client riservata utilizzando asserzioni client

Oltre a usare un segreto client o un certificato, le applicazioni client riservate possono dimostrare la loro identità anche con le asserzioni client. Per informazioni dettagliate, vedere CredentialDescription.

Passaggi successivi

Passare all'articolo successivo in questo scenario, Acquisire un token per l'app.