Compartilhar via


Aplicativo de desktop que chama APIs Web: configuração do código

Aplica-se a: Círculo verde com um símbolo de marca de seleção branca que indica que o conteúdo a seguir se aplica aos locatários da força de trabalho. Locatários da força de trabalho (saiba mais)

Este artigo contém instruções para ajudá-lo a configurar o código com as coordenadas do aplicativo.

Pré-requisitos

  • Registre um novo aplicativo no Centro de administração do Microsoft Entra, configurado apenas para Contas neste diretório organizacional. Consulte Registrar um aplicativo para obter mais detalhes. Registre os seguintes valores na página visão geral do aplicativo para uso posterior:
    • ID do aplicativo (cliente)
    • ID do diretório (locatário)

Adicionar um URI de redirecionamento de plataforma

Para especificar o tipo de aplicativo para o registro do aplicativo, siga estas etapas:

  1. Em Gerenciar, selecione Autenticação>Adicionar uma plataforma>móvel e aplicativos da área de trabalho
  2. Dependendo do método de autenticação que você está usando, escolha uma das seguintes opções:
    • Para aplicativos que usam navegadores inseridos, use o valor exato: https://login.microsoftonline.com/common/oauth2/nativeclient
    • Para aplicativos que usam navegadores do sistema, use o valor exato: http://localhost
    • Objective-C ou aplicativos Swift para macOS: msauth.<your.app.bundle.id>://auth.
    • Aplicativos Node.js Electron: msal{Your_Application/Client_Id}://auth

Observação

Para aplicativos do WAM (Gerenciador de Autenticação Web), nenhum URI de redirecionamento é necessário na MSAL.

Habilitar fluxo de cliente público

Para distinguir o fluxo de código do dispositivo, a autenticação integrada do Windows e um nome de usuário e uma senha de um aplicativo cliente confidencial usando um fluxo de credenciais do cliente usado em aplicativos daemon, nenhum dos quais requer um URI de redirecionamento, configure-o como um aplicativo cliente público. Para obter essa configuração

Para identificar seu aplicativo como um cliente público, siga estas etapas:

  1. Em Gerenciar, selecione Autenticação.

  2. Em Configurações avançadas, na opção Permitir fluxos de clientes públicos, selecione Sim.

  3. Selecione Salvar para salvar as alterações.

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 Node.jsMSAL 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

1Os 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.