Aplicativo de desktop que chama APIs Web: configuração do código
Agora que você criou o aplicativo, aprenderá a configurar o código com as coordenadas do aplicativo.
Bibliotecas da Microsoft com suporte para aplicativos de desktop
As seguintes bibliotecas da Microsoft dão suporte a aplicativos de desktop:
Idioma / estrutura | Projeto em GitHub |
Pacote | Introdução iniciado |
Conectar usuários | Acessar APIs da Web | Geralmente disponíveis (GA) ou Visualização pública1 |
---|---|---|---|---|---|---|
Electron | MSAL Node.js | msal-node | — | Versão prévia pública | ||
Java | MSAL4J | msal4j | — | GA | ||
macOS (Swift/Obj-C) | MSAL para iOS e macOS | MSAL | Tutorial | GA | ||
UWP | MSAL.NET | Microsoft.Identity.Client | Tutorial | GA | ||
WPF | MSAL.NET | Microsoft.Identity.Client | Tutorial | GA |
1 Os Termos de Licença Universal para Serviços Online se aplicam a bibliotecas em Visualização Pública.
Aplicativo cliente público
De um ponto de vista de código, os aplicativos de desktop são aplicativos cliente públicos. A configuração será um pouco diferente dependendo se você usa autenticação interativa ou não.
Você precisará compilar e manipular o MSAL.NET IPublicClientApplication
.
Exclusivamente por código
O código a seguir instancia um aplicativo cliente público e conecta usuários na nuvem pública do Microsoft Azure com uma conta corporativa ou de estudante ou uma conta pessoal da Microsoft.
IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientId)
.Build();
Se você pretender usar a autenticação interativa ou o fluxo de código do dispositivo, como visto anteriormente, use o modificador .WithRedirectUri
.
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithDefaultRedirectUri()
.Build();
Usar arquivos de configuração
O código a seguir instancia um aplicativo cliente público a partir de um objeto de configuração, que poderia ser preenchido programaticamente ou lido em um arquivo de configuração.
PublicClientApplicationOptions options = GetOptions(); // your own method
IPublicClientApplication app = PublicClientApplicationBuilder.CreateWithApplicationOptions(options)
.WithDefaultRedirectUri()
.Build();
Configuração mais elaborada
Você pode elaborar a criação de aplicativos adicionando vários modificadores. Por exemplo, se você quiser que o aplicativo seja um aplicativo multilocatário em uma nuvem nacional, como o Governo dos EUA mostrado aqui, você poderá escrever:
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithDefaultRedirectUri()
.WithAadAuthority(AzureCloudInstance.AzureUsGovernment,
AadAuthorityAudience.AzureAdMultipleOrgs)
.Build();
MSAL.NET também contém um modificador para os Serviços de Federação do Active Directory (AD FS) 2019:
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithAdfsAuthority("https://consoso.com/adfs")
.Build();
Por fim, se você quiser adquirir tokens para um locatário B2C do Azure Active Directory (AAD), especifique o locatário, conforme mostrado no seguinte snippet de código:
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithB2CAuthority("https://fabrikamb2c.b2clogin.com/tfp/{tenant}/{PolicySignInSignUp}")
.Build();
Saiba mais
Para saber mais sobre como configurar um aplicativo de desktop MSAL.NET:
- Para obter uma lista de todos os modificadores disponíveis em
PublicClientApplicationBuilder
, veja a documentação de referência PublicClientApplicationBuilder. - Para obter uma descrição de todas as opções expostas em
PublicClientApplicationOptions
, veja PublicClientApplicationOptions na documentação de referência.
Exemplo completo com opções de configuração
Imagine um aplicativo de console .NET que tenha o seguinte arquivo de configuração appsettings.json
:
{
"Authentication": {
"AzureCloudInstance": "AzurePublic",
"AadAuthorityAudience": "AzureAdMultipleOrgs",
"ClientId": "00001111-aaaa-2222-bbbb-3333cccc4444"
},
"WebAPI": {
"MicrosoftGraphBaseEndpoint": "https://graph.microsoft.com"
}
}
Você tem pouco código para ler nesse arquivo usando a estrutura de configuração fornecida pelo .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;
}
}
Agora, para criar o aplicativo, escreva o seguinte código:
SampleConfiguration config = SampleConfiguration.ReadFromJsonFile("appsettings.json");
var app = PublicClientApplicationBuilder.CreateWithApplicationOptions(config.PublicClientApplicationOptions)
.WithDefaultRedirectUri()
.Build();
Antes da chamada ao método .Build()
, você pode substituir a configuração por chamadas para métodos .WithXXX
, conforme visto anteriormente.
Próximas etapas
Vá para o próximo artigo neste cenário, Adquirir um token para o aplicativo de desktop.