Compartilhar via


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 A biblioteca pode solicitar tokens de ID para entrada do usuário. A biblioteca pode solicitar tokens de acesso para APIs da Web protegidas. Versão prévia pública
Java MSAL4J msal4j A biblioteca pode solicitar tokens de ID para entrada do usuário. A biblioteca pode solicitar tokens de acesso para APIs da Web protegidas. GA
macOS (Swift/Obj-C) MSAL para iOS e macOS MSAL Tutorial A biblioteca pode solicitar tokens de ID para entrada do usuário. A biblioteca pode solicitar tokens de acesso para APIs da Web protegidas. GA
UWP MSAL.NET Microsoft.Identity.Client Tutorial A biblioteca pode solicitar tokens de ID para entrada do usuário. A biblioteca pode solicitar tokens de acesso para APIs da Web protegidas. GA
WPF MSAL.NET Microsoft.Identity.Client Tutorial A biblioteca pode solicitar tokens de ID para entrada do usuário. A biblioteca pode solicitar tokens de acesso para APIs da Web protegidas. 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.

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.