Exercício – Implementar a autenticação interativa usando MSAL.NET
Neste exercício, você aprenderá a executar as seguintes ações:
- Registrar um aplicativo com a plataforma de identidade da Microsoft
- Use a classe
PublicClientApplicationBuilder
em MSAL.NET - Adquirir um token interativamente em um aplicativo de console
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Se você ainda não tiver uma, poderá se inscrever para uma avaliação gratuita no https://azure.com/free
- Visual Studio Code: você pode instalar o Visual Studio Code a partir de https://code.visualstudio.com.
- Uma versão do SDK do .NET https://dotnet.microsoft.com/download/dotnet (6.0, 7.0 ou 8.0)
Registrar um novo aplicativo
Acesse o portal: https://portal.azure.com
Pesquise e selecione Microsoft Entra ID.
Em Gerenciar, selecione Registros de aplicativo>Novo registro.
Quando a página Registrar um aplicativo aparecer, insira as informações de registro do aplicativo:
Campo Valor Nome az204appreg
tipos de conta com suporte Selecione Contas neste diretório organizacional apenas URI de Redirecionamento (opcional) Selecione de cliente público/nativo (área de trabalho de & móvel) e insira http://localhost
na caixa à direita.Selecione Registro.
O Microsoft Entra ID atribui uma ID de cliente exclusiva ao seu aplicativo, e você é levado para a página Visão Geral do aplicativo.
Configurar o aplicativo de console
Inicie o Visual Studio Code e abra um terminal selecionando Terminal e, em seguida, Novo Terminal.
Crie uma pasta para o projeto e acesse a pasta.
md az204-auth cd az204-auth
Crie o aplicativo de console do .NET.
dotnet new console
Abra a pasta az204-auth no Visual Studio Code.
code . -r
Criar o aplicativo de console
Nesta seção, você adicionará os pacotes e o código necessários ao projeto.
Adicionar pacotes e usar instruções
Adicione o pacote
Microsoft.Identity.Client
ao projeto em um terminal no Visual Studio Code.dotnet add package Microsoft.Identity.Client
Abra o arquivo Program.cs e adicione instruções
using
para incluirMicrosoft.Identity.Client
e habilitar operações assíncronas.using System.Threading.Tasks; using Microsoft.Identity.Client;
Altere o método Main para habilitar o modo assíncrono.
public static async Task Main(string[] args)
Adicionar código para a autenticação interativa
Você precisa de duas variáveis para manter as IDs de Aplicativo (cliente) e Diretório (locatário). Você pode copiar esses valores do portal. Adicione o código a seguir e substitua os valores de cadeia de caracteres pelos valores apropriados do portal.
private const string _clientId = "APPLICATION_CLIENT_ID"; private const string _tenantId = "DIRECTORY_TENANT_ID";
Use a classe
PublicClientApplicationBuilder
para criar o contexto de autorização.var app = PublicClientApplicationBuilder .Create(_clientId) .WithAuthority(AzureCloudInstance.AzurePublic, _tenantId) .WithRedirectUri("http://localhost") .Build();
Código Descrição .Create
Cria um PublicClientApplicationBuilder
a partir de um ID do cliente..WithAuthority
Adiciona uma autoridade conhecida correspondente a um servidor do ADFS. No código, estamos especificando a nuvem pública e utilizando o tenant para o aplicativo que registramos.
Adquirir um token
Quando você registrou o aplicativo az204appreg, ele gerou automaticamente uma permissão de API user.read
para o Microsoft Graph. Use essa permissão para adquirir um token.
Defina o escopo de permissão para a solicitação de token. Adicione o código a seguir abaixo do
PublicClientApplicationBuilder
.string[] scopes = { "user.read" };
Adicione código para solicitar o token e gravar o resultado no console.
AuthenticationResult result = await app.AcquireTokenInteractive(scopes).ExecuteAsync(); Console.WriteLine($"Token:\t{result.AccessToken}");
Revisar o formulário concluído
O conteúdo do arquivo Program.cs deve ser semelhante ao seguinte exemplo:
using System;
using System.Threading.Tasks;
using Microsoft.Identity.Client;
namespace az204_auth
{
class Program
{
private const string _clientId = "APPLICATION_CLIENT_ID";
private const string _tenantId = "DIRECTORY_TENANT_ID";
public static async Task Main(string[] args)
{
var app = PublicClientApplicationBuilder
.Create(_clientId)
.WithAuthority(AzureCloudInstance.AzurePublic, _tenantId)
.WithRedirectUri("http://localhost")
.Build();
string[] scopes = { "user.read" };
AuthenticationResult result = await app.AcquireTokenInteractive(scopes).ExecuteAsync();
Console.WriteLine($"Token:\t{result.AccessToken}");
}
}
}
Executar o aplicativo
No terminal do Visual Studio Code, execute
dotnet build
para verificar se há erros edotnet run
para rodar o aplicativo.O aplicativo abre o navegador padrão solicitando que você selecione a conta com a qual deseja autenticar. Se houver várias contas listadas, selecione a associada ao locatário usado no aplicativo.
Se esta for a primeira vez que você se autentica no aplicativo registrado, você receberá uma notificação de permissões solicitadas solicitando que você aprove o aplicativo para ler os dados associados à sua conta. Selecione Aceitar.
Você deve ver os resultados semelhantes ao exemplo abaixo no console.
Token: eyJ0eXAiOiJKV1QiLCJub25jZSI6IlVhU.....