Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Introduction
As bibliotecas de autenticação .NET suportam cenários que envolvem a proteção de uma API Web e a aquisição de tokens para uma API Web protegida. O MSAL.NET é usado apenas para estes últimos.
Como programador, pode adquirir um token de vários tipos de aplicações, incluindo aplicações web, aplicações móveis, aplicações de ambiente de trabalho, APIs web e aplicações a correr em dispositivos que não têm navegador (ou iOT). Estes tipos de aplicações dividem-se em duas categorias:
- Aplicações clientes públicas (desktop e móveis) utilizam a PublicClientApplication classe
- Aplicações cliente confidenciais (aplicações web, APIs web e aplicações daemon - desktop ou web). Este tipo de aplicações utiliza o ConfidentialClientApplication.
O MSAL.NET suporta a aquisição de tokens quer em nome de
quer (e apenas para aplicações clientes confidenciais), em nome da própria aplicação (para nenhum utilizador). Nesse caso, a aplicação cliente confidencial partilha um segredo com o ícone do Microsoft Entra ID do ![]()
O MSAL.NET suporta várias plataformas (.NET Framework, .NET e .NET MAUI). As aplicações .NET também podem correr em diferentes sistemas operativos (Windows, Linux e macOS). Os cenários podem variar consoante as plataformas.
Os Cenários
A imagem abaixo resume os cenários suportados e mostra em que plataforma, e a que protocolo Microsoft Entra isto corresponde:
Aplicação web que faz login com os utilizadores e chama uma API web em nome do utilizador
Para proteger uma aplicação web (iniciar sessão do utilizador) vais usar ASP.NET ou ASP.NET Core com o middleware ASP.NET OpenID Connect. Isto envolve validar o token, o que é feito pelas extensões IdentityModel para a biblioteca .NET, e não pelo MSAL.NET.
Para chamar a API web em nome do utilizador, usará o MSAL.NETConfidentialClientApplication, aproveitando o fluxo de código de autorização, armazenando o token adquirido na cache do token e adquirindo um token silenciosamente a partir da cache quando necessário. O MSAL atualiza o token, se necessário.
Aplicação móvel que chama uma API web em nome do utilizador que iniciou sessão de forma interativa
Para chamar uma API web a partir de uma aplicação móvel, utiliza-se os métodos interativos de aquisição de tokens do PublicClientApplication da MSAL.NET. Estes métodos interativos permitem-lhe controlar a experiência da interface de iniciação de sessão, bem como a localização do diálogo interativo em algumas plataformas.
Para permitir esta interação, o MSAL.NET utiliza um navegador web. Existem especificidades dependendo da plataforma móvel. No iOS e Android, pode escolher se quer aproveitar o navegador do sistema (o predefinido) ou um navegador web embutido. Podes ativar a partilha de cache de tokens no iOS.
Proteger a própria aplicação com o Intune
A sua aplicação móvel (escrita em Xamarin.iOS ou Xamarin. Android) pode ter políticas de proteção de aplicações aplicadas, para que possa ser gerida pelo InTune e reconhecida pelo Intune como uma aplicação gerida. O SDK do InTune é separado do MSAL e comunica com o Microsoft Entra ID de forma autónoma.
Aplicação de desktop ou daemon de serviço que chama uma API web como ela própria (no seu próprio nome)
Pode escrever uma aplicação daemon que adquira um token usando a sua própria identidade por cima, utilizando os métodos de aquisição de credenciais do cliente do ConfidentialClientApplication da MSAL.NET. Isto supõe que a aplicação tenha anteriormente registado um segredo (palavra-passe ou certificado da aplicação) junto do Microsoft Entra ID, que depois partilha com esta chamada.
Aplicativo de área de trabalho que chama uma API da Web em nome de um usuário conectado
As aplicações de ambiente de trabalho podem usar a mesma autenticação interativa que as aplicações móveis.
Para aplicações alojadas no Windows, também é possível que aplicações a correr em computadores ligados a um domínio Windows ou ao Microsoft Entra adquiram um token silenciosamente através da Autenticação Windows Integrada.
Se a sua aplicação de ambiente de trabalho for uma aplicação .NET Core a correr em Linux ou Mac, não pode usar o fluxo interativo de autenticação (uma vez que o .NET Core não fornece navegador web) nem a Autenticação Windows Integrada. A melhor opção nesse caso é usar o fluxo de código do dispositivo, conforme explicado em Aplicação, sem navegador, ou aplicação iOT a chamar uma API em nome do utilizador.
Embora não seja recomendado, pode usar o fluxo Nome de utilizador-palavra-passe em aplicações clientes públicas; Ainda é necessário em alguns cenários (como DevOps), mas atenção que usá-lo impõe restrições à sua aplicação. Por exemplo, não pode iniciar sessão com utilizadores que precisam de realizar Autenticação Multifator (acesso condicional) ou tirar partido dos benefícios do login único (SSO). O fluxo nome de utilizador e palavra-passe vai contra os princípios da autenticação moderna e é fornecido apenas por razões legadas.
Em aplicações de ambiente de trabalho, se quiser que a cache de tokens seja persistente, deve personalizar a serialização da cache de tokens.
Aplicação sem navegador, ou aplicação iOT que chama uma API em nome do utilizador
Aplicações a correr num dispositivo sem navegador continuarão a conseguir chamar uma API em nome de um utilizador, depois de o utilizador iniciar sessão noutro dispositivo que tenha um navegador web. Para isso, terá de usar o fluxo de Código do Dispositivo
Web API chamada outra API Web a jusante em nome do utilizador para quem foi chamada
Se quiser que a sua API web protegida por ASP.NET ou ASP.NET Core chame outra API web em nome do utilizador representado pelo token de acesso usado para a ligar, terá de:
- Valide o token. Para isso, vais usar o middleware ASP.NET JWT por baixo. Isto envolve também a validação do token, que é feita pelas extensões IdentityModel para a biblioteca .NET, e não pelo MSAL.NET
- Depois, terá de adquirir um token para a API web a jusante utilizando o método da ConfidentialClientApplication Adquirir um token em nome de um utilizador em chamadas service-to-service.
- As APIs web que chamam outras APIs web também terão de fornecer uma serialização personalizada da cache.
Web API a chamar outra API no seu próprio nome
Tal como em aplicações de desktop ou de demónios de serviço, uma API web de demónio (ou uma aplicação web de demónio) pode usar os métodos de aquisição de credenciais de cliente do ConfidentialClientApplication da MSAL.NET.
Características transversais
Em todos os cenários, pode querer:
- Resolva o problema por si próprio ativando registos ou Telemetria
- Compreenda como reagir a exceções devido ao serviço
MsalServiceExceptionMicrosoft Entra, ou a algo errado a acontecer no próprio clienteMsalClientException - Use o MSAL.NET com um proxy