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 | — | Versión preliminar pública | ||
Java | MSAL4J | msal4j | — | GA | ||
macOS (Swift/Obj-C) | MSAL para iOS y macOS | MSAL | Tutorial | GA | ||
UWP | MSAL.NET | Microsoft.Identity.Client | Tutorial | GA | ||
WPF | MSAL.NET | Microsoft.Identity.Client | Tutorial | GA |
1 Términos de licencia universal de Online Services se aplican a las bibliotecas de 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
.
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.