Application de bureau qui appelle des API web : Configuration de code

Maintenant que vous avez créé votre application, vous allez apprendre à configurer le code avec les coordonnées de l’application.

Bibliothèques Microsoft prenant en charge les applications de bureau

Les bibliothèques Microsoft suivantes prennent en charge les applications de bureau :

Langage/framework Projet sur
GitHub
Package Bien démarrer
démarré
Connexion des utilisateurs Accès aux API web Disponibilité générale ou
Préversion publique1
Electron MSAL Node.js msal-node Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. Préversion publique
Java MSAL4J msal4j Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. GA
macOS (Swift/Obj-C) MSAL pour iOS et macOS MSAL Didacticiel Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. GA
UWP MSAL.NET Microsoft.Identity.Client Didacticiel Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. GA
WPF MSAL.NET Microsoft.Identity.Client Didacticiel Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. GA

1Les termes du contrat de licence universelle pour les services en ligne s’appliquent aux bibliothèques en préversion publique.

Applications clientes publiques

Du point de vue du code, les applications de bureau sont des applications clientes publiques. La configuration est légèrement différente avec ou sans authentification interactive.

Vous devez créer et manipuler IPublicClientApplication MSAL.NET.

IPublicClientApplication

Exclusivement par code

Le code suivant instancie une application cliente publique et connecte les utilisateurs dans le cloud public Microsoft Azure, avec un compte professionnel ou scolaire, ou un compte Microsoft personnel.

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

Si vous prévoyez d'utiliser l'authentification interactive ou le flux de code d'appareil, comme indiqué précédemment, utilisez le modificateur .WithRedirectUri :

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

Utiliser des fichiers de configuration

Le code suivant instancie une application cliente publique à partir d'un objet de configuration, qui pourrait être renseigné par programmation ou lu à partir d'un fichier config.

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

Configuration plus élaborée

Vous pouvez développer la création d’une application en ajoutant un certain nombre de modificateurs. Par exemple, si vous souhaitez que votre application soit mutualisée dans un cloud national, tel que US Government comme illustré ici, vous pouvez écrire :

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

MSAL.NET contient également un modificateur pour les services de fédération Active Directory (AD FS) 2019 :

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

Enfin, si vous souhaitez acquérir des jetons pour un locataire Azure Active Directory (Azure AD) B2C, spécifiez votre client, comme indiqué dans l'extrait de code suivant :

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

En savoir plus

Pour en savoir plus sur la configuration d'une application de bureau MSAL.NET :

  • Pour obtenir la liste de tous les modificateurs disponibles sur PublicClientApplicationBuilder, consultez PublicClientApplicationBuilder dans la documentation de référence.
  • Pour obtenir la description de toutes les options exposées dans PublicClientApplicationOptions, consultez PublicClientApplicationOptions dans la documentation de référence.

Exemple complet avec options de configuration

Imaginez une application console .NET disposant du fichier config appsettings.json suivant :

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

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

Vous avez peu de code à lire dans ce fichier via l'infrastructure de configuration .NET fournie :

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

Pour créer votre application, écrivez le code suivant :

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

Avant l'appel à la méthode .Build(), vous pouvez remplacer votre configuration par des appels aux méthodes .WithXXX, comme indiqué précédemment.

Étapes suivantes

Passez à l’article suivant de ce scénario, Acquérir un jeton pour l’application de bureau.