Tipos de aplicativo e fluxos de autenticação da plataforma de identidade da Microsoft

A plataforma de identidade da Microsoft oferece suporte à autenticação para diferentes tipos de arquiteturas de aplicativos modernas. Todas as arquiteturas são baseadas nos protocolos padrão da indústria OAuth 2.0 e OpenID Connect. Usando as bibliotecas de autenticação para a plataforma de identidade da Microsoft, os aplicativos autenticam identidades e adquirem tokens para acessar APIs protegidas.

Este artigo descreve os fluxos de autenticação e os cenários de aplicativos nos quais eles são usados.

Categorias de aplicação

Os tokens de segurança podem ser adquiridos a partir de vários tipos de aplicações, incluindo:

  • Web Apps
  • Aplicações móveis
  • Desktop apps (Aplicações de ambiente de trabalho)
  • APIs da Web

Os tokens também podem ser adquiridos por aplicativos executados em dispositivos que não têm um navegador ou estão sendo executados na Internet das Coisas (IoT).

As secções seguintes descrevem as categorias de aplicações.

Recursos protegidos versus aplicativos cliente

Os cenários de autenticação envolvem duas atividades:

  • Adquirir tokens de segurança para uma API da Web protegida: recomendamos que você use a Biblioteca de Autenticação da Microsoft (MSAL), desenvolvida e suportada pela Microsoft.
  • Proteger uma API Web ou um aplicativo Web: um desafio de proteger esses recursos é validar o token de segurança. Em algumas plataformas, a Microsoft oferece bibliotecas de middleware.

Com ou sem utilizadores

A maioria dos cenários de autenticação adquire tokens em nome de usuários conectados.

Cenários com usuários

No entanto, também existem aplicativos daemon. Nesses cenários, os aplicativos adquirem tokens em nome de si mesmos sem nenhum usuário.

Cenários com aplicativos daemon

Aplicativos cliente de página única, público e confidencial

Os tokens de segurança podem ser adquiridos por vários tipos de aplicativos. Estas aplicações tendem a ser separadas nas três categorias seguintes. Cada um é usado com diferentes bibliotecas e objetos.

  • Aplicativos de página única: também conhecidos como SPAs, são aplicativos da Web nos quais os tokens são adquiridos por um aplicativo JavaScript ou TypeScript em execução no navegador. Muitos aplicativos modernos têm um aplicativo de página única no front-end que é escrito principalmente em JavaScript. O aplicativo geralmente usa uma estrutura como Angular, React ou Vue. MSAL.js é a única Biblioteca de Autenticação da Microsoft que oferece suporte a aplicativos de página única.

  • Aplicativos cliente públicos: os aplicativos nesta categoria, como os seguintes tipos, sempre entram nos usuários:

    • Aplicativos de área de trabalho que chamam APIs da Web em nome de usuários conectados
    • Aplicações móveis
    • Aplicativos executados em dispositivos que não têm um navegador, como aqueles executados em IoT
  • Aplicativos cliente confidenciais: os aplicativos nesta categoria incluem:

    • Aplicativos Web que chamam uma API da Web
    • APIs da Web que chamam uma API da Web
    • Aplicativos Daemon, mesmo quando implementados como um serviço de console, como um daemon Linux ou um serviço do Windows

Público-alvo de início de sessão

Os fluxos de autenticação disponíveis diferem dependendo do público de entrada. Alguns fluxos estão disponíveis apenas para contas de trabalho ou de escola. Outros estão disponíveis tanto para contas corporativas ou de estudante quanto para contas pessoais da Microsoft.

Para obter mais informações, consulte Tipos de conta suportados.

Tipos de aplicação

A plataforma de identidade da Microsoft oferece suporte à autenticação para estas arquiteturas de aplicativos:

  • Aplicações de página única
  • Web Apps
  • APIs da Web
  • Aplicações móveis
  • Aplicações nativas
  • Aplicações daemon
  • Aplicativos do lado do servidor

Os aplicativos usam os diferentes fluxos de autenticação para entrar em usuários e obter tokens para chamar APIs protegidas.

Aplicação de página única

Muitos aplicativos Web modernos são criados como aplicativos de página única do lado do cliente. Esses aplicativos usam JavaScript ou uma estrutura como Angular, Vue e React. Esses aplicativos são executados em um navegador da web.

Os aplicativos de página única diferem dos aplicativos Web tradicionais do lado do servidor em termos de características de autenticação. Usando a plataforma de identidade da Microsoft, os aplicativos de página única podem entrar em usuários e obter tokens para acessar serviços de back-end ou APIs da Web. A plataforma de identidade da Microsoft oferece dois tipos de concessão para aplicativos JavaScript:

MSAL.js (2.x) MSAL.js (1.x)
Uma autenticação de aplicativo de página única Um aplicativo de página única implícito

Aplicativo Web que entra em um usuário

Um aplicativo Web que entra em um usuário

Para ajudar a proteger uma aplicação Web que inicia sessão num utilizador:

Para obter mais informações, consulte Aplicativo Web que entra em usuários.

Aplicativo Web que entra em um usuário e chama uma API da Web em nome do usuário

Um aplicativo Web chamando APIs da Web

Para chamar uma API da Web de um aplicativo Web em nome de um usuário, use o fluxo de código de autorização e armazene os tokens adquiridos no cache de tokens. Quando necessário, o MSAL atualiza os tokens e o controlador adquire silenciosamente os tokens do cache.

Para obter mais informações, consulte Aplicativo Web que chama APIs da Web.

Aplicativo de área de trabalho que chama uma API da Web em nome de um usuário conectado

Para que um aplicativo de desktop chame uma API da Web que entra em usuários, use os métodos interativos de aquisição de tokens do MSAL. Com esses métodos interativos, você pode controlar a experiência da interface do usuário de entrada. A MSAL usa um navegador da Web para essa interação.

Um aplicativo de desktop chamando uma API da Web

Há outra possibilidade para aplicativos hospedados no Windows em computadores que ingressaram em um domínio do Windows ou pelo Microsoft Entra ID. Esses aplicativos podem adquirir silenciosamente um token usando a autenticação integrada do Windows.

Os aplicativos executados em um dispositivo sem um navegador ainda podem chamar uma API em nome de um usuário. Para autenticar, o usuário deve entrar em outro dispositivo que tenha um navegador da Web. Este cenário requer que você use o fluxo de código do dispositivo.

Fluxo de código do dispositivo

Embora não seja recomendável usá-lo, o fluxo de nome de usuário/senha está disponível em aplicativos cliente públicos. Esse fluxo ainda é necessário em alguns cenários, como o DevOps.

O uso do fluxo de nome de usuário/senha restringe seus aplicativos. Por exemplo, os aplicativos não podem entrar em um usuário que precisa usar a autenticação multifator ou a ferramenta Acesso Condicional no Microsoft Entra ID. Seus aplicativos também não se beneficiam do logon único. A autenticação com o fluxo de nome de usuário/senha vai contra os princípios da autenticação moderna e é fornecida apenas por motivos herdados.

Em aplicativos da área de trabalho, se desejar que o cache de token persista, você poderá personalizar a serialização do cache de token. Ao implementar a serialização de cache de token duplo, você pode usar caches de token compatíveis com versões anteriores e posteriores.

Para obter mais informações, consulte Aplicativo de área de trabalho que chama APIs da Web.

Aplicativo móvel que chama uma API da Web em nome de um usuário interativo

Semelhante a um aplicativo de desktop, um aplicativo móvel chama os métodos interativos de aquisição de tokens da MSAL para adquirir um token para chamar uma API da Web.

Um aplicativo móvel chamando uma API da Web

MSAL iOS e MSAL Android usam o navegador da Web do sistema por padrão. No entanto, você pode direcioná-los para usar o modo de exibição da Web incorporado. Existem especificidades que dependem da plataforma móvel: Plataforma Universal do Windows (UWP), iOS ou Android.

Alguns cenários, como aqueles que envolvem o Acesso Condicional relacionado a um ID de dispositivo ou a um registro de dispositivo, exigem que um agente seja instalado no dispositivo. Exemplos de corretores são o Portal da Empresa da Microsoft no Android e o Microsoft Authenticator no Android e iOS. A MSAL agora pode interagir com corretores. Para obter mais informações sobre corretores, consulte Aproveitando corretores no Android e iOS.

Para obter mais informações, consulte Aplicativo móvel que chama APIs da Web.

Nota

Um aplicativo móvel que usa MSAL.iOS, MSAL. O Android ou MSAL.NET no Xamarin pode ter políticas de proteção de aplicativos aplicadas a ele. Por exemplo, as políticas podem impedir que um usuário copie texto protegido. A aplicação móvel é gerida pelo Intune e é reconhecida pelo Intune como uma aplicação gerida. Para obter mais informações, consulte Visão geral do SDK do Aplicativo do Microsoft Intune.

O SDK do Aplicativo do Intune é separado das bibliotecas MSAL e interage com a ID do Microsoft Entra por conta própria.

API web protegida

Você pode usar o ponto de extremidade da plataforma de identidade da Microsoft para proteger serviços Web, como a API RESTful do seu aplicativo. Uma API da Web protegida é chamada por meio de um token de acesso. O token ajuda a proteger os dados da API e autenticar solicitações de entrada. O chamador de uma API da Web acrescenta um token de acesso no cabeçalho de autorização de uma solicitação HTTP.

Se você quiser proteger seu ASP.NET ou ASP.NET API da Web principal, valide o token de acesso. Para essa validação, use o middleware JWT ASP.NET. A validação é feita pelas extensões IdentityModel para a biblioteca .NET e não pelo MSAL.NET.

Para obter mais informações, consulte API da Web protegida.

API Web que chama outra API Web em nome de um usuário

Para que sua API da Web protegida chame outra API da Web em nome de um usuário, seu aplicativo precisa adquirir um token para a API da Web downstream. Essas chamadas são por vezes referidas como chamadas serviço-a-serviço . As APIs da Web que chamam outras APIs da Web precisam fornecer serialização de cache personalizada.

Uma API da Web chamando outra API da Web

Para obter mais informações, consulte API da Web que chama APIs da Web.

Aplicativo Daemon que chama uma API da Web no nome do daemon

Os aplicativos que têm processos de longa execução ou que operam sem a interação do usuário também precisam de uma maneira de acessar APIs da Web seguras. Esse aplicativo pode autenticar e obter tokens usando a identidade do aplicativo. O aplicativo prova sua identidade usando um segredo de cliente ou certificado.

Você pode escrever esses aplicativos daemon que adquirem um token para o aplicativo de chamada usando os métodos de aquisição de credenciais do cliente no MSAL. Esses métodos exigem um segredo do cliente que você adiciona ao registro do aplicativo na ID do Microsoft Entra. Em seguida, o aplicativo compartilha o segredo com o daemon chamado. Exemplos de tais segredos incluem senhas de aplicativos, asserção de certificado e asserção de cliente.

Um aplicativo daemon chamado por outros aplicativos e APIs

Para obter mais informações, consulte Aplicativo Daemon que chama APIs da Web.

Cenários e fluxos de autenticação suportados

Você usa fluxos de autenticação para implementar os cenários de aplicativo que estão solicitando tokens. Não há um mapeamento um-para-um entre cenários de aplicativos e fluxos de autenticação.

Os cenários que envolvem a aquisição de tokens também são mapeados para fluxos de autenticação OAuth 2.0. Para obter mais informações, consulte Protocolos OAuth 2.0 e OpenID Connect na plataforma de identidade da Microsoft.

Cenário Passo a passo detalhado do cenário Fluxo e concessão do OAuth 2.0 Audiência
Aplicativo de página única com código de autenticação Aplicação de página única Código de autorização com PKCE Contas corporativas ou de estudante, contas pessoais e Azure Ative Directory B2C (Azure AD B2C)
Aplicativo de página única com implícito Aplicação de página única Implícito Contas corporativas ou de estudante, contas pessoais e Azure Ative Directory B2C (Azure AD B2C)
Aplicação web que inicia a sessão de utilizadores Aplicação web que inicia a sessão de utilizadores Código de autorização Contas corporativas ou de estudante, contas pessoais e Azure AD B2C
Aplicação Web que chama as APIs Web Aplicação Web que chama as APIs Web Código de autorização Contas corporativas ou de estudante, contas pessoais e Azure AD B2C
Aplicação de ambiente de trabalho que chama APIs Web Aplicação de ambiente de trabalho que chama APIs Web Interativo usando código de autorização com PKCE Contas corporativas ou de estudante, contas pessoais e Azure AD B2C
Autenticação integrada do Windows Contas escolares ou profissionais
Palavra-passe do proprietário do recurso Contas escolares ou profissionais e Azure AD B2C
Aplicação sem navegador Código do dispositivo Contas corporativas ou de estudante, contas pessoais, mas não o Azure AD B2C
Aplicação móvel que chama as APIs Web Aplicativo móvel que chama APIs da Web Interativo usando código de autorização com PKCE Contas corporativas ou de estudante, contas pessoais e Azure AD B2C
Palavra-passe do proprietário do recurso Contas escolares ou profissionais e Azure AD B2C
Aplicativo Daemon que chama APIs da Web Aplicativo Daemon que chama APIs da Web Credenciais de cliente Permissões somente de aplicativo que não têm usuário e são usadas somente em organizações do Microsoft Entra
API Web que chama APIs Web API Web que chama APIs Web Em nome de Contas escolares ou profissionais e contas pessoais

Cenários e plataformas e idiomas suportados

As Bibliotecas de Autenticação da Microsoft suportam várias plataformas:

  • .NET
  • .NET Framework
  • Java
  • JavaScript
  • macOS
  • Android nativo
  • iOS Nativo
  • Node.js
  • Python
  • Windows 10/UWP
  • Xamarin.iOS
  • Xamarin.Android

Você também pode usar vários idiomas para criar seus aplicativos.

Na coluna Windows da tabela a seguir, cada vez que o .NET é mencionado, o .NET Framework também é possível. Este último é omitido para evitar a confusão da mesa.

Cenário Windows Linux Mac iOS Android
Aplicação de página única
Autenticação de aplicativo de página única
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js MSAL.js MSAL.js
MSAL.js
Aplicação de página única
Aplicativo de página única implícito
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js MSAL.js MSAL.js
MSAL.js
Aplicação web que inicia a sessão de utilizadores
Aplicação Web que inicia sessão em utilizadores
ASP.NET Core
ASP.NET Núcleo Nó MSAL
Nó MSAL
ASP.NET Core
ASP.NET Núcleo Nó MSAL
Nó MSAL
ASP.NET Core
ASP.NET Núcleo Nó MSAL
Nó MSAL
Aplicação Web que chama as APIs Web

Aplicação Web que chama as APIs Web
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Frasco + MSAL Python Nó MSAL
Nó MSAL
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Frasco + MSAL Python Nó MSAL
Nó MSAL
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Frasco + MSAL Python Nó MSAL
Nó MSAL
Aplicação de ambiente de trabalho que chama APIs Web

Aplicação de ambiente de trabalho que chama APIs WebFluxo de código do dispositivo
.NETMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python Nó MSAL
Nó MSAL
.NETMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python Nó MSAL
Nó MSAL
.NETMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python
Nó MSAL
Nó MSAL
iOS / Objetive C ou swift MSAL.objc
Aplicativo móvel que chama APIs da Web
Aplicação móvel que chama as APIs Web
UWP MSAL.NET Xamarin MSAL.NET iOS / Objetive C ou swift MSAL.objc Android MSAL. Androide
Aplicação Daemon
Aplicações daemon
.NETMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python Nó MSAL
Nó MSAL
.NET MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python Nó MSAL
Nó MSAL
.NETMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python Nó MSAL
Nó MSAL
API Web que chama APIs Web

API Web que chama APIs Web
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python Nó MSAL
Nó MSAL
.NET
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python Nó MSAL
Nó MSAL
.NET
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python Nó MSAL
Nó MSAL

Para obter mais informações, consulte Bibliotecas de autenticação da plataforma de identidade da Microsoft.

Próximos passos

Para obter mais informações sobre autenticação, consulte: