Tipos de aplicativo para a plataforma de identidade da Microsoft

A plataforma de identidade da Microsoft dá suporte à autenticação para várias arquiteturas de aplicativos modernas, todas baseadas em protocolos padrão da indústria OAuth 2.0 ou OpenID Connect. Este artigo descreve os tipos de aplicativos que você pode criar usando o Azure AD v2.0, independentemente da sua linguagem ou plataforma preferidas. As informações foram projetadas para te ajudar a entender os cenários de alto nível antes que você comece a trabalhar com o código nos cenários de aplicação.

Noções básicas

Você precisa registrar cada aplicativo que usa a plataforma de identidade da Microsoft nos Registros de aplicativo do centro de administração do Microsoft Entra. O processo de registro do aplicativo coleta e atribui estes valores para seu aplicativo:

  • Uma ID (cliente) de aplicativo que identifica exclusivamente o aplicativo.
  • Um URI de Redirecionamento que pode ser usado para direcionar as respostas novamente ao aplicativo
  • Alguns outros valores específicos de cenário, como tipos de conta com suporte

Para obter detalhes, saiba como registrar um aplicativo.

Depois de registrado, o aplicativo se comunica com a plataforma de identidade da Microsoft enviando solicitações ao ponto de extremidade. Fornecemos as estruturas e as bibliotecas de software livre que lidam com os detalhes dessas solicitações. Você também tem a opção de implementar a lógica de autenticação ao criar solicitações para esses pontos de extremidade:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize
https://login.microsoftonline.com/common/oauth2/v2.0/token

Os tipos de aplicativo com suporte para a plataforma de identidade da Microsoft são:

  • SPA (aplicativo de página única)
  • Aplicativo Web
  • Web API
  • Aplicativos móveis e nativos
  • Serviço, daemon, script

Aplicativos de página única

Muitos aplicativos modernos têm um SPA (aplicativo de página única) front-end escrito principalmente em JavaScript, frequentemente com uma estrutura como Angular, React ou Vue. O plataforma de identidade da Microsoft dá suporte a esses aplicativos usando o protocolo OpenID Connect para autenticação e um dos dois tipos de concessões de autorização definidos pelo OAuth 2.0. Os tipos de concessão com suporte são o fluxo de concessão implícita do OAuth 2.0 ou o fluxo PKCE + o código de autorização do OAuth 2.0 mais recente (confira abaixo).

O diagrama de fluxo demonstra o fluxo de concessão de código de autorização do OAuth 2.0 (com detalhes sobre o PKCE omitido), na qual o aplicativo recebe um código do ponto de extremidade authorize da plataforma de identidade da Microsoft, e o resgata para um token de acesso e um token de atualização, usando solicitações da Web entre sites. Para os SPAs (aplicativos de página única), o token de acesso é válido por 1 hora e, uma vez expirado, deve solicitar outro código usando o token de atualização. Além do token de acesso, um id_token que representa o usuário conectado ao aplicativo cliente também costuma ser solicitado por meio do mesmo fluxo e/ou uma solicitação separada do OpenID Connect (não mostrada aqui).

Diagrama que mostra o fluxo do código de autorização do OAuth 2.0 entre um aplicativo de página única e o terminal de serviço do token de segurança.

Para ver isso em ação, consulte o Início Rápido: logar usuários em um SPA (aplicativo de página única) e chamar o API do Microsoft Graph usando o JavaScript.

Fluxo de código de autorização versus fluxo implícito

O fluxo de código de autorização do OAuth 2.0 agora é a maneira recomendada de criar SPAs para garantir a compatibilidade do seu aplicativo no Safari e em outros navegadores com controle de privacidade. Após a remoção de cookies de terceiros e maior atenção, o uso contínuo do fluxo implícito não é recomendado.

Aplicativos Web

Para os aplicativos Web (.NET, PHP, Java, Ruby, Python, Node) que o usuário acessa por meio de um navegador, você pode usar o OpenID Connect para entrada do usuário. No OpenID Connect, o aplicativo Web recebe um token de ID. Um token de ID é um token de segurança que verifica a identidade do usuário e fornece informações sobre o usuário na forma de declarações:

// Partial raw ID token
abC1dEf2Ghi3jkL4mNo5Pqr6stU7vWx8Yza9...

// Partial content of a decoded ID token
{
    "name": "Casey Jensen",
    "email": "casey.jensen@onmicrosoft.com",
    "oid": "ab12cd34-effe-5678-9012-abcdef012345"
    ...
}

Mais detalhes sobre os diferentes tipos de tokens usados na plataforma de identidade da Microsoft estão disponíveis na referência do token de acesso e do id_token.

Em aplicativos de servidor Web, o fluxo de autenticação de entrada usa estas etapas de alto nível:

Mostra o fluxo de autenticação do aplicativo Web

Você pode verificar a identidade do usuário ao validar o token de ID com uma chave pública de assinatura que é recebida da plataforma de identidade da Microsoft. Um cookie de sessão é definido e pode ser usado para identificar o usuário nas solicitações de página subsequentes.

Saiba mais criando um aplicativo Web ASP.NET Core que conecta usuários na série de tutoriais de várias partes a seguir.

Além da entrada simples, um aplicativo de servidor Web talvez precise acessar outro serviço Web como uma API REST (Transferência de Estado Representacional). Nesse caso, o aplicativo de servidor Web participa de um fluxo do OpenID Connect e do OAuth 2.0 combinados, usando o fluxo do código de autorização do OAuth 2.0. Para obter mais informações sobre esse cenário, consulte nosso exemplo de código.

APIs da Web

Você pode usar a plataforma de identidade da Microsoft para proteger serviços Web, como a API Web RESTful do seu aplicativo. As APIs da Web podem ser implementadas em várias plataformas e linguagens. Elas também podem ser implementadas usando gatilhos HTTP no Azure Functions. Em vez de tokens de ID e de cookies de sessão, uma API Web usa um token de acesso OAuth 2.0 para proteger seus dados e para 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, como esta:

GET /api/items HTTP/1.1
Host: www.mywebapi.com
Authorization: Bearer abC1dEf2Ghi3jkL4mNo5Pqr6stU7vWx8Yza9...
Accept: application/json
...

A API Web usa o token de acesso para verificar a identidade do chamador da API e para extrair informações sobre o chamador a partir de declarações que são codificadas no token de acesso. Mais detalhes sobre os diferentes tipos de tokens usados na plataforma de identidade da Microsoft estão disponíveis na referência do token de acesso e do token de ID.

Uma API Web pode oferecer aos usuários o poder de aceitar/recusar uma funcionalidade ou dados específicos ao expor permissões, também conhecidas como escopos. Para um aplicativo de chamada obter permissão para um escopo, o usuário deve concordar com o escopo durante um fluxo. A plataforma de identidade da Microsoft solicita a permissão do usuário e registra as permissões em todos os tokens de acesso recebidos pela API Web. A API Web valida os tokens de acesso que recebe em cada chamada e executa verificações de autorização.

Uma API da Web pode receber tokens de acesso de todos os tipos de aplicativos, incluindo aplicativos de servidor Web, aplicativos móveis e de desktop, aplicativos de página única, daemons do lado do servidor e até outras APIs da Web. O fluxo de alto nível para uma API Web tem esta aparência:

Mostra o fluxo de autenticação da API Web

Para saber como proteger uma API Web com tokens de acesso do OAuth 2, confira os exemplos de código no tutorial da API Web protegida.

Em muitos casos, APIs Web também precisam fazer solicitações de saída para outras APIs Web downstream protegidas pela plataforma de identidade da Microsoft. Para fazer isso, as APIs Web podem utilizar o fluxo OBO (On Behalf Of), que permite que a API Web troque um token de acesso de entrada por outro token de acesso a ser usado em solicitações de saída. Para obter mais informações, consulte a plataforma de identidade da Microsoft e o fluxo On-Behalf-Of do OAuth 2.0.

Aplicativos móveis e nativos

Os aplicativos instalados no dispositivo, como os aplicativos móveis e de desktop, geralmente precisam acessar serviços de back-end ou APIs da Web que armazenam dados e executam funções em nome de um usuário. Esses aplicativos podem adicionar credenciais e autorização a serviços de back-end usando o fluxo de código de autorização do OAuth 2.0.

Nesse fluxo, o aplicativo recebe um código de autorização da plataforma de identidade da Microsoft quando o usuário faz logon. O código de autorização representa a permissão do aplicativo para chamar serviços de back-end em nome do usuário conectado. O aplicativo pode trocar o código de autorização em segundo plano por um token de acesso e um token de atualização do OAuth 2.0. O aplicativo pode usar o token de acesso para se autenticar em APIs da Web em solicitações HTTP, e usar o token de atualização para obter novos tokens de acesso quando os antigos expirarem.

Mostra o fluxo de autenticação do aplicativo nativo

Observação

Se o aplicativo usar o sistema de exibição da Web padrão, verifique as informações sobre a funcionalidade "Confirmar Minha Entrada" e o código de erro AADSTS50199 nos Códigos de erro de autenticação e autorização do Microsoft Entra.

Servidor, daemons e scripts

Os aplicativos com processos de longa duração ou que operem sem interação com um usuário também precisam de uma maneira de acessar recursos protegidos, como APIs Web. Esses aplicativos podem se autenticar e obter tokens usando a identidade do aplicativo (em vez de a identidade delegada de um usuário) com o fluxo de credenciais do cliente OAuth 2.0. Você pode provar a identidade do aplicativo usando um certificado ou o segredo do cliente. Para obter mais informações, consulte aplicativo de console do daemon do .NET usando a plataforma de identidade da Microsoft.

Nesse fluxo, o aplicativo interage diretamente com o ponto de extremidade /token para obter acesso:

Mostra o fluxo de autenticação de aplicativo de daemon

Para construir um aplicativo daemon, consulte a documentação de credenciais do cliente ou tente um aplicativo de amostra .NET .

Confira também

Agora que você está familiarizado com os tipos de aplicativos com suporte na plataforma de identidade da Microsoft, saiba mais sobre OAuth 2.0 e OpenID Connect para obter uma compreensão dos componentes de protocolo usados pelos diferentes cenários.