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.
No entanto, também existem aplicativos daemon. Nesses cenários, os aplicativos adquirem tokens em nome de si mesmos sem nenhum usuário.
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) |
---|---|
Aplicativo Web que entra em um usuário
Para ajudar a proteger uma aplicação Web que inicia sessão num utilizador:
Se você desenvolver em .NET, usará o ASP.NET ou o ASP.NET Core com o middleware ASP.NET OpenID Connect. A proteção de um recurso envolve a validação do token de segurança, o que é feito pelas extensões IdentityModel para bibliotecas .NET e não MSAL.
Se você desenvolver em Node.js, você usa MSAL Node.
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
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.
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.
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.
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.
Para obter mais informações, consulte Aplicativo móvel que chama APIs da Web.
Nota
Um aplicativo móvel que usa MSAL iOS ou MSAL Android 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. 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.
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.
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 |
---|---|---|---|
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) | |
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 | Código de autorização | Contas corporativas ou de estudante, contas pessoais e Azure AD B2C | |
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 | 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 | |
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 | 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 | 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
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 |
MSAL.js |
MSAL.js |
MSAL.js |
MSAL.js | MSAL.js |
Aplicação de página única |
MSAL.js |
MSAL.js |
MSAL.js |
MSAL.js | MSAL.js |
Aplicação web que inicia a sessão de utilizadores |
ASP.NET Núcleo Nó MSAL |
ASP.NET Núcleo Nó MSAL |
ASP.NET Núcleo Nó MSAL |
||
Aplicação Web que chama as APIs Web |
ASP.NET Core + MSAL.NET MSAL Java Frasco + MSAL Python Nó MSAL |
ASP.NET Core + MSAL.NET MSAL Java Frasco + MSAL Python Nó MSAL |
ASP.NET Core + MSAL.NET MSAL Java Frasco + MSAL Python Nó MSAL |
||
Aplicação de ambiente de trabalho que chama APIs Web |
MSAL.NET MSAL Java MSAL Python Nó MSAL |
MSAL.NET MSAL Java MSAL Python Nó MSAL |
MSAL.NET MSAL Java MSAL Python Nó MSAL MSAL.objc |
||
Aplicativo móvel que chama APIs da Web |
MSAL.NET MSAL.NET | MSAL.objc | MSAL. Androide | ||
Aplicação Daemon |
MSAL.NET MSAL Java MSAL Python Nó MSAL |
MSAL.NET MSAL Java MSAL Python Nó MSAL |
MSAL.NET MSAL Java MSAL Python Nó MSAL |
||
API Web que chama APIs Web |
ASP.NET Core + MSAL.NET MSAL Java MSAL Python Nó MSAL |
ASP.NET Core + MSAL.NET MSAL Java MSAL Python Nó MSAL |
ASP.NET Core + MSAL.NET MSAL Java MSAL Python 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: