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 | — | Anteprima pubblica | ||
Java | MSAL4J | msal4j | — | Disponibilità generale | ||
macOS (Swift/Obj-C) | MSAL per iOS e macOS | MSAL | Esercitazione | Disponibilità generale | ||
UWP | MSAL.NET | Microsoft.Identity.Client | Esercitazione | Disponibilità generale | ||
WPF | MSAL.NET | Microsoft.Identity.Client | Esercitazione | 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
.
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:
- Per un elenco di tutti i modificatori disponibili in
PublicClientApplicationBuilder
, vedere la documentazione di riferimento PublicClientApplicationBuilder. - Per una descrizione di tutte le opzioni esposte in
PublicClientApplicationOptions
, vedere PublicClientApplicationOptions nella documentazione di riferimento.
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.