Condividi tramite


App desktop che chiama le API Web: Configurazione del codice

Dopo aver creato l'applicazione, si apprenderà come configurare il codice con le coordinate dell'applicazione.

Librerie Microsoft che supportano le app desktop

Le librerie Microsoft seguenti supportano le app desktop:

Linguaggio/framework Progetto in
GitHub
Pacchetto Recupero
avviata
Consentire l'accesso degli utenti Accedere alle API Web Disponibile a livello generale (GA) o
Anteprima pubblica1
Electron MSAL Node.js msal-node La libreria può richiedere token ID per l'accesso utente. La libreria può richiedere token di accesso per le API Web protette. Anteprima pubblica
Java MSAL4J msal4j La libreria può richiedere token ID per l'accesso utente. La libreria può richiedere token di accesso per le API Web protette. Disponibilità generale
macOS (Swift/Obj-C) MSAL per iOS e macOS MSAL Esercitazione La libreria può richiedere token ID per l'accesso utente. La libreria può richiedere token di accesso per le API Web protette. Disponibilità generale
UWP MSAL.NET Microsoft.Identity.Client Esercitazione La libreria può richiedere token ID per l'accesso utente. La libreria può richiedere token di accesso per le API Web protette. Disponibilità generale
WPF MSAL.NET Microsoft.Identity.Client Esercitazione La libreria può richiedere token ID per l'accesso utente. La libreria può richiedere token di accesso per le API Web protette. Disponibilità generale

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

Applicazione client pubblica

Dal punto di vista del codice, le applicazioni desktop sono applicazioni client pubbliche. La configurazione sarà leggermente diversa in base all'uso o meno dell'autenticazione interattiva.

Sarà necessario compilare e modificare MSAL.NET IPublicClientApplication.

IPublicClientApplication

Esclusivamente in base al codice

Il codice seguente crea un'istanza di un'applicazione client pubblica e accede agli utenti nel cloud pubblico di Microsoft Azure con un account aziendale o dell'istituto di istruzione o un account Microsoft personale.

IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientId)
    .Build();

Se si intende usare l'autenticazione interattiva o il flusso del codice del dispositivo, come illustrato in precedenza, usare il .WithRedirectUri modificatore.

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithDefaultRedirectUri()
        .Build();

Usare i file di configurazione

Il codice seguente crea un'istanza di un'applicazione client pubblica da un oggetto di configurazione, che può essere compilato a livello di codice o letto da un file di configurazione.

PublicClientApplicationOptions options = GetOptions(); // your own method
IPublicClientApplication app = PublicClientApplicationBuilder.CreateWithApplicationOptions(options)
        .WithDefaultRedirectUri()
        .Build();

Configurazione più elaborata

È possibile elaborare la compilazione dell'applicazione aggiungendo un certo numero di modificatori. Ad esempio, se si vuole che l'applicazione sia un'applicazione multi-tenant in un cloud nazionale, ad esempio us government mostrata di seguito, è possibile scrivere:

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithDefaultRedirectUri()
        .WithAadAuthority(AzureCloudInstance.AzureUsGovernment,
                         AadAuthorityAudience.AzureAdMultipleOrgs)
        .Build();

MSAL.NET contiene anche un modificatore per Active Directory Federation Services 2019:

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithAdfsAuthority("https://consoso.com/adfs")
        .Build();

Infine, se si vogliono acquisire i token per un tenant di Azure Active Directory (Azure AD) B2C, specificare il tenant come illustrato nel frammento di codice seguente:

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithB2CAuthority("https://fabrikamb2c.b2clogin.com/tfp/{tenant}/{PolicySignInSignUp}")
        .Build();

Altre informazioni

Per altre informazioni su come configurare un'applicazione desktop MSAL.NET:

Esempio completo con le opzioni di configurazione

Si immagini un'applicazione console .NET con il file di configurazione seguente appsettings.json :

{
  "Authentication": {
    "AzureCloudInstance": "AzurePublic",
    "AadAuthorityAudience": "AzureAdMultipleOrgs",
    "ClientId": "00001111-aaaa-2222-bbbb-3333cccc4444"
  },

  "WebAPI": {
    "MicrosoftGraphBaseEndpoint": "https://graph.microsoft.com"
  }
}

Il codice da leggere in questo file è poco usando . Framework di configurazione fornito da NET:

public class SampleConfiguration
{
 /// <summary>
 /// Authentication options
 /// </summary>
 public PublicClientApplicationOptions PublicClientApplicationOptions { get; set; }

 /// <summary>
 /// Base URL for Microsoft Graph (it varies depending on whether the application runs
 /// in Microsoft Azure public clouds or national or sovereign clouds)
 /// </summary>
 public string MicrosoftGraphBaseEndpoint { get; set; }

 /// <summary>
 /// Reads the configuration from a JSON file
 /// </summary>
 /// <param name="path">Path to the configuration json file</param>
 /// <returns>SampleConfiguration as read from the json file</returns>
 public static SampleConfiguration ReadFromJsonFile(string path)
 {
  // .NET configuration
  IConfigurationRoot Configuration;
  var builder = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile(path);
  Configuration = builder.Build();

  // Read the auth and graph endpoint configuration
  SampleConfiguration config = new SampleConfiguration()
  {
   PublicClientApplicationOptions = new PublicClientApplicationOptions()
  };
  Configuration.Bind("Authentication", config.PublicClientApplicationOptions);
  config.MicrosoftGraphBaseEndpoint =
  Configuration.GetValue<string>("WebAPI:MicrosoftGraphBaseEndpoint");
  return config;
 }
}

A questo punto, per creare l'applicazione, scrivere il codice seguente:

SampleConfiguration config = SampleConfiguration.ReadFromJsonFile("appsettings.json");
var app = PublicClientApplicationBuilder.CreateWithApplicationOptions(config.PublicClientApplicationOptions)
           .WithDefaultRedirectUri()
           .Build();

Prima della chiamata al metodo, è possibile eseguire l'override della .Build() configurazione con le chiamate ai .WithXXX metodi, come illustrato in precedenza.

Passaggi successivi

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