Exercício - Implementar autenticação interativa usando MSAL.NET
Neste exercício, você aprenderá a executar as seguintes ações:
- Registar uma aplicação na plataforma de identidade da Microsoft
- Use a
PublicClientApplicationBuilder
classe em MSAL.NET - Adquira um token interativamente em um aplicativo de console
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Se ainda não tiver uma, pode inscrever-se numa avaliação gratuita em https://azure.com/free.
- Visual Studio Code: Você pode instalar o Visual Studio Code a partir do https://code.visualstudio.com.
- Uma versão do SDK do .NET https://dotnet.microsoft.com/download/dotnet (6.0, 7.0 ou 8.0)
Registar uma nova aplicação
Inicie sessão no portal: https://portal.azure.com
Procure e selecione Microsoft Entra ID.
Em Gerir, selecione Registos de>aplicações Novo registo.
Quando a página Registar uma aplicação for apresentada, introduza as informações de registo da aplicação:
Campo Valor Nome az204appreg
Tipos de conta suportados Selecione Contas somente neste diretório organizacional URI de redirecionamento (opcional) Selecione Cliente público/nativo (mobile & desktop) e digite http://localhost
na caixa à direita.Selecione Registar.
A ID do Microsoft Entra atribui uma ID de aplicativo (cliente) exclusiva ao seu aplicativo e você é direcionado 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, New Terminal.
Crie uma pasta para o projeto e mude para a pasta.
md az204-auth cd az204-auth
Crie o aplicativo de console .NET.
dotnet new console
Abra a pasta az204-auth no Visual Studio Code.
code . -r
Criar o aplicativo de console
Nesta seção, você adiciona os pacotes e o código necessários ao projeto.
Adicionar pacotes e usar instruções
Adicione o
Microsoft.Identity.Client
pacote ao projeto em um terminal no Visual Studio Code.dotnet add package Microsoft.Identity.Client
Abra o arquivo Program.cs e adicione
using
instruções 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 async.
public static async Task Main(string[] args)
Adicionar código para a autenticação interativa
Você precisa de duas variáveis para armazenar 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
PublicClientApplicationBuilder
classe para criar o contexto de autorização.var app = PublicClientApplicationBuilder .Create(_clientId) .WithAuthority(AzureCloudInstance.AzurePublic, _tenantId) .WithRedirectUri("http://localhost") .Build();
Código Description .Create
Cria um a partir de um PublicClientApplicationBuilder
clientID..WithAuthority
Adiciona uma Autoridade conhecida correspondente a um servidor ADFS. No código, estamos especificando a nuvem pública e usando o locatário para o aplicativo que registramos.
Adquirir um token
Quando você registrou o aplicativo az204appreg, ele gerou automaticamente uma permissão user.read
de API para o Microsoft Graph. Você usa essa permissão para adquirir um token.
Defina o escopo de permissão para a solicitação de token. Adicione o seguinte código abaixo do
PublicClientApplicationBuilder
arquivo .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}");
Rever candidatura concluída
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 a aplicação
No terminal do Visual Studio Code, execute
dotnet build
para verificar se há erros e, em seguidadotnet run
, para executar o aplicativo.O aplicativo abre o navegador padrão solicitando que você selecione a conta com a qual deseja se 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ê recebe 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.....