Aplicación de escritorio que llama a las API web: Configuración del código

Ahora que ha creado la aplicación, aprenderá a configurar el código con las coordenadas de la aplicación.

Bibliotecas de Microsoft que admiten aplicaciones de escritorio

Las bibliotecas de Microsoft siguientes admiten aplicaciones de escritorio:

Lenguaje/marco de trabajo Proyecto en
GitHub
Paquete Introducción
iniciado
Inicio de sesión de usuarios Acceso a API web Disponible con carácter general (GA) o
Versión preliminar pública1
Electron MSAL Node.js msal-node Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. Versión preliminar pública
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 para iOS y macOS MSAL Tutorial 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 Tutorial 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 Tutorial Library can request ID tokens for user sign-in. Library can request access tokens for protected web APIs. GA

1Los términos de licencia universal de Online Services se aplican a las bibliotecas en la versión preliminar pública.

Aplicación cliente pública

Desde un punto de vista del código, las aplicaciones de escritorio son aplicaciones cliente públicas. La configuración diferirá un poco en función de si se utiliza o no la autenticación interactiva.

Deberá compilar y manipular MSAL.NETIPublicClientApplication.

IPublicClientApplication

Exclusivamente mediante código

El siguiente código crea una instancia de una aplicación cliente pública e inicia la sesión de los usuarios en la nube pública de Microsoft Azure con una cuenta profesional o educativa o bien con una cuenta Microsoft personal.

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

Si piensa utilizar la autenticación interactiva o el flujo de código del dispositivo, tal como se vio anteriormente, utilice el modificador .WithRedirectUri.

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

Uso de archivos de configuración

El siguiente código crea una instancia de una aplicación cliente pública a partir de un objeto de configuración, que podría rellenarse mediante programación o leerse desde un archivo de configuración.

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

Configuración más elaborada

Puede elaborar la compilación de la aplicación agregando una serie de modificadores. Por ejemplo, si quiere que la aplicación sea una aplicación de varios inquilinos en una nube nacional, como en la Administración Pública de Estados Unidos que se muestra aquí, podría escribir lo siguiente:

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

MSAL.NET también contiene un modificador para Servicios de federación de Active Directory 2019:

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

Por último, si quiere adquirir tokens para un inquilino de Azure Active Directory (Azure AD) B2C, especifique el inquilino tal como se muestra en el siguiente fragmento de código:

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

Más información

Para más información sobre cómo configurar una aplicación de escritorio de MSAL.NET:

  • Para obtener una lista de todos los modificadores disponibles en PublicClientApplicationBuilder, consulte la documentación de referencia de PublicClientApplicationBuilder.
  • Para obtener la descripción de todas las opciones que se muestran en PublicClientApplicationOptions, consulte PublicClientApplicationOptions en la documentación de referencia.

Ejemplo completo con opciones de configuración

Imagine una aplicación de consola .NET que tiene el siguiente archivo de configuración appsettings.json:

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

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

Tiene algún código que leer en este archivo mediante el marco de configuración de .NET proporcionado:

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

Ahora, para crear la aplicación, escriba el siguiente código:

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

Antes de llamar al método .Build() puede invalidar la configuración con llamadas a los métodos .WithXXX, tal como se mostró anteriormente.

Pasos siguientes

Avance al siguiente artículo de este escenario, Obtención de un token para la aplicación de escritorio.