Fluxos de autenticação e cenários de aplicativos

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

Este artigo descreve fluxos de autenticação e os cenários de aplicativos em que eles são utilizados.

Categorias de aplicativo

Os tokens podem ser adquiridos de vários tipos de aplicativo, como:

  • Aplicativos Web
  • Aplicativos móveis
  • Aplicativos da área de trabalho
  • APIs da Web

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

As seções a seguir descrevem as categorias de aplicativos.

Recursos protegidos versus aplicativos cliente

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

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

Com usuários ou sem usuários

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

Cenários com usuários

No entanto, há também aplicativos daemon. Nesses cenários, os aplicativos adquirem tokens em nome deles próprios, sem usuário.

Cenários com aplicativos daemon

Aplicativos de página única, aplicativos cliente públicos e aplicativos cliente confidenciais

Os tokens de segurança podem ser adquiridos por meio de vários tipos de aplicativos. Esses aplicativos tendem a ser divididos nas três categorias a seguir. Cada uma é usada com diferentes bibliotecas e objetos.

  • Aplicativos de página única: também conhecidos como SPAs, são aplicativos Web em que os tokens são adquiridos por um aplicativo JavaScript ou TypeScript executado 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 dá suporte a aplicativos de página única.

  • Aplicativos cliente públicos: os aplicativos nesta categoria, como os tipos mencionados a seguir, sempre conectam usuários:

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

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

Conectar o público

Os fluxos de autenticação disponíveis diferem de acordo com o público-alvo para entrada. Alguns fluxos estão disponíveis apenas para contas corporativas ou de estudante. Outros estão disponíveis para contas corporativas ou de estudante e para contas pessoais da Microsoft.

Para obter mais informações, confira Tipos de arquivo com suporte.

Cenários de aplicativos

A plataforma de identidade da Microsoft dá suporte à autenticação destas arquiteturas de aplicativo:

  • Aplicativos de página única
  • Aplicativos Web
  • APIs da Web
  • Aplicativos móveis
  • Aplicativos nativos
  • Aplicativos Daemon
  • Aplicativos do lado do servidor

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

Aplicativo 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, aplicativos de página única podem conectar usuários e obter tokens para acessar serviços de back-end ou APIs Web. A plataforma de identidade da Microsoft oferece dois tipos de concessão para aplicativos JavaScript:

MSAL.js (2.x) MSAL.js (1.x)
Um aplicativo de página única auth Um aplicativo de página única implicit

Aplicativo Web que conecta um usuário

Um aplicativo Web que conecta um usuário

Para ajudar a proteger um aplicativo Web que conecta um usuário:

  • Se você desenvolve no .NET, use ASP.NET ou ASP.NET Core com o middleware ASP.NET OpenID Connect. A proteção de um recurso envolve validar o token de segurança, o que é feito por IdentityModel Extensions for .NET, e não por bibliotecas MSAL.

  • Se você desenvolve no Node.js, use MSAL Node ou Passport.js.

Para obter mais informações, confira Aplicativo Web que conecta os usuários.

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

Um aplicativo Web chamando APIs Web

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

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

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

Para um aplicativo da área de trabalho chamar uma API Web que conecta usuários, use os métodos interativos de aquisição de token da MSAL. Com esses métodos interativos, é possível controlar a experiência de interface do usuário de entrada. A MSAL usa um navegador da Web para essa interação.

Um aplicativo da área de trabalho que chama uma API Web

Há outra possibilidade para aplicativos hospedados no Windows em execução em computadores ingressados em um domínio do Windows ou ingressados no Azure AD (Azure Active Directory). Esses aplicativos podem adquirir um token silenciosamente usando a autenticação integrada do Windows.

Os aplicativos em execução em um dispositivo sem um navegador continuam podendo chamar uma API em nome de um usuário. Para autenticar, o usuário precisa entrar em outro dispositivo que tem um navegador da Web. Este cenário requer o uso do fluxo de código do dispositivo.

Fluxo de código do dispositivo

Embora não seja recomendável utilizá-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, tais como o DevOps.

O fluxo de nome de usuário/senha restringe os aplicativos. Por exemplo, impedindo que eles conectem um usuário que precise usar a autenticação multifator ou a ferramenta de acesso condicional no Azure AD. Seus aplicativos também não se beneficiam do logon único. A autenticação com fluxo de nome de usuário/senha contraria os princípios da autenticação moderna e é oferecida apenas por motivos de herança.

Em aplicativos da área de trabalho, você precisa personalizar a serialização do cache de token se deseja que ele seja persistente. Implementando a serialização dupla de cache de token, é possível até habilitar caches de token compatíveis com versões anteriores e posteriores. Esses tokens dão suporte a gerações anteriores de bibliotecas de autenticação. Bibliotecas específicas incluem a ADAL.NET (Biblioteca de Autenticação do Azure AD para .NET) versão 3 e versão 4.

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

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

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

Um aplicativo móvel que chama uma API Web

A MSAL iOS e a MSAL Android usam, por padrão, o navegador da Web do sistema. No entanto, você pode instruí-las a usar a exibição Web incorporada em vez disso. Há especificidades que dependem da plataforma móvel: Plataforma Universal do Windows (UWP), iOS ou Android.

Alguns cenários, como os que envolvem o acesso condicional relacionado à ID do dispositivo ou um registro de dispositivo, exigem a instalação de um agente no dispositivo. Alguns exemplos de agentes incluem o Portal da Empresa Microsoft no Android e o Microsoft Authenticator no Android e no iOS. A MSAL agora pode interagir com agentes. Para obter mais informações sobre agentes, confira Aproveitando agentes no Android e no iOS.

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

Observação

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

O SDK do aplicativo do Intune é separado das bibliotecas MSAL e interage com o Azure AD 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 Web protegida é chamada por meio de um token de acesso. O token ajuda a proteger os dados da API e autenticar as solicitações de entrada. O chamador de uma API Web acrescenta um token de acesso ao cabeçalho de autorização de uma solicitação HTTP.

Se você deseja proteger sua API Web ASP.NET Core ou ASP.NET, precisa validar o token de acesso. Para essa validação, você usará o middleware JWT ASP.NET. A validação é feita pela biblioteca Extensões IdentityModel para .NET, não por MSAL.NET.

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

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

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

Uma API Web que chama outra API Web

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

Aplicativo daemon que chama uma API Web no nome do daemon

Os aplicativos com processos de longa duração ou que operam sem interação com um usuário também precisam de uma maneira de acessar APIs Web protegidas. Esse tipo de aplicativo pode autenticar e obter tokens usando a identidade do aplicativo. O aplicativo provar a própria identidade usando um certificado ou o segredo do cliente.

Os métodos de aquisição de credenciais de cliente na MSAL podem ser utilizados para codificar esses aplicativos daemon que adquirem um token para o aplicativo de chamada. Esses métodos exigem que um segredo do cliente seja adicionado ao registro do aplicativo no Azure AD. Em seguida, o aplicativo compartilha o segredo com o daemon chamado. Alguns exemplos desses segredos são senhas de aplicativo, declaração de certificado e asserção de cliente.

Um aplicativo daemon chamado por outros aplicativos e APIs

Para obter mais informações, confira Aplicativo daemon que chama APIs Web.

Cenários e fluxos de autenticação com suporte

Os fluxos de autenticação são usados para implementar os cenários de aplicativos que estão solicitando tokens. Não há um mapeamento individualizado 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, confira 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 Público
Single-Page App with Auth code Aplicativo de página única Código de autorização com PKCE Contas corporativas ou de estudante, contas pessoais e Azure AD B2C (Azure Active Directory B2C)
Single-Page App with Implicit Aplicativo de página única Implícito Contas corporativas ou de estudante, contas pessoais e Azure AD B2C (Azure Active Directory B2C)
Web app that signs in users Aplicativo Web que conecta os usuários Código de autorização Contas corporativas ou de estudante, contas pessoais e Azure AD B2C
Web app that calls web APIs Aplicativo Web que chama as APIs Web Código de autorização Contas corporativas ou de estudante, contas pessoais e Azure AD B2C
Desktop app that calls web APIs Aplicativo da área 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 corporativas ou de estudante
Senha de proprietário do recurso Contas corporativas ou de estudante e Azure AD B2C
Browserless application Código do dispositivo Contas corporativas ou de estudante e contas pessoais, mas não do Azure AD B2C
Mobile app that calls web APIs Aplicativo móvel que chama as APIs Web Interativo usando código de autorização com PKCE Contas corporativas ou de estudante, contas pessoais e Azure AD B2C
Senha de proprietário do recurso Contas corporativas ou de estudante e Azure AD B2C
Daemon app that calls web APIs Aplicativo daemon que chama APIs Web Credenciais de cliente Permissões somente no aplicativo, sem usuário e usadas apenas em organizações do Azure AD
Web API that calls web APIs API Web que chama as APIs Web On-behalf-of Contas corporativas ou de estudante e contas pessoais

Cenários e plataformas e idiomas com suporte

As Bibliotecas de Autenticação da Microsoft são compatíveis com várias plataformas:

  • .NET Core
  • .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árias linguagens para compilar seus aplicativos.

Observação

Alguns tipos de aplicativos não estão disponíveis em todas as plataformas.

Na coluna Windows da tabela a seguir, cada vez que o .NET Core é mencionado, o .NET Framework também é possível. Esse último é omitido para evitar aglomeração na tabela.

Cenário Windows Linux Mac iOS Android
Aplicativo de página única
Aplicativo de página única Auth
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js MSAL.js MSAL.js
MSAL.js
Aplicativo de página única
Aplicativo de página única Implicit
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js MSAL.js MSAL.js
MSAL.js
Aplicativo Web que conecta os usuários
Aplicativo Web que conecta usuários
ASP.NET Core
ASP.NET Core Nó MSAL
Nó MSAL
ASP.NET Core
ASP.NET Core Nó MSAL
Nó MSAL
ASP.NET Core
ASP.NET Core Nó MSAL
Nó MSAL
Aplicativo Web que chama as APIs Web

Aplicativo Web que chama as APIs Web
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python Nó MSAL
Nó MSAL
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python Nó MSAL
Nó MSAL
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python Nó MSAL
Nó MSAL
Aplicativo da área de trabalho que chama APIs Web

Aplicativo da área de trabalho que chama APIs Web Fluxo de código de trabalho
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python Nó MSAL
Nó MSAL
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python Nó MSAL
Nó MSAL
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python
Nó MSAL
Nó MSAL
iOS / Objective C ou swift MSAL.objc
Aplicativo móvel que chama as APIs Web
Aplicativo móvel que chama as APIs Web
UWP MSAL.NET Xamarin MSAL.NET iOS / Objective C ou swift MSAL.objc Android MSAL.Android
Aplicativo daemon
Aplicativo daemon
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python Nó MSAL
Nó MSAL
.NET Core MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python Nó MSAL
Nó MSAL
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python Nó MSAL
Nó MSAL
API Web que chama as APIs Web

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

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

Próximas etapas