Tipos de aplicação para a plataforma de identidades da Microsoft

A plataforma de identidade da Microsoft suporta autenticação para várias arquiteturas de aplicativos modernos, todas elas baseadas em protocolos padrão do setor OAuth 2.0 ou OpenID Connect. Este artigo descreve os tipos de aplicativos que você pode criar usando a plataforma de identidade da Microsoft, independentemente do seu idioma ou plataforma preferidos. As informações são projetadas para ajudá-lo a entender cenários de alto nível antes de começar a trabalhar com o código nos cenários de aplicativo.

Noções básicas

Você deve registrar cada aplicativo que usa a plataforma de identidade da Microsoft no centro de administração do Microsoft Entra Registros de aplicativos. O processo de registo da aplicação recolhe e atribui estes valores à sua aplicação:

  • Uma ID de aplicativo (cliente) que identifica exclusivamente seu aplicativo
  • Um URI de redirecionamento que você pode usar para direcionar as respostas de volta ao seu aplicativo
  • Alguns outros valores específicos do cenário, como tipos de conta suportados

Para obter detalhes, saiba como registrar um aplicativo.

Depois que o aplicativo é registrado, o aplicativo se comunica com a plataforma de identidade da Microsoft enviando solicitações para o ponto de extremidade. Fornecemos estruturas e bibliotecas de código aberto que lidam com os detalhes dessas solicitações. Você também tem a opção de implementar a lógica de autenticação por conta própria, criando solicitações para estes pontos de extremidade:

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

Os tipos de aplicativos suportados pela plataforma de identidade da Microsoft são;

  • Aplicação de página única (SPA)
  • Aplicação Web
  • API da Web
  • Aplicações móveis e nativas
  • Serviço, daemon, script

Aplicações de página única

Muitos aplicativos modernos têm um front-end de aplicativo de página única (SPA) escrito principalmente em JavaScript, geralmente com uma estrutura como Angular, React ou Vue. A plataforma de identidade da Microsoft oferece 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 suportados são o fluxo de concessão implícito do OAuth 2.0 ou o código de autorização OAuth 2.0 mais recente + fluxo PKCE (veja abaixo).

O fluxograma demonstra o fluxo de concessão de código de autorização OAuth 2.0 (com detalhes sobre PKCE omitidos), onde o aplicativo recebe um código do ponto de extremidade da plataforma authorize de identidade da Microsoft e o resgata por um token de acesso e um token de atualização usando solicitações da Web entre sites. Para SPAs, 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 normalmente também é solicitado por meio do mesmo fluxo e/ou uma solicitação separada do OpenID Connect (não mostrada aqui).

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

Para ver isso em ação, consulte Guia de início rápido: entre usuários em um aplicativo de página única (SPA) e chame a API do Microsoft Graph usando JavaScript.

Fluxo de código de autorização vs. 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 conscientes da privacidade. Após a remoção de cookies de terceiros e maior atenção, o uso continuado do fluxo implícito não é recomendado.

Web Apps

Para aplicativos da Web (.NET, PHP, Java, Ruby, Python, Node) que o usuário acessa através de um navegador, você pode usar o OpenID Connect para entrar no 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 de token de acesso e na referência de id_token.

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

Mostra o fluxo de autenticação do aplicativo Web

Você pode garantir a identidade do usuário validando o token de ID com uma chave de assinatura pública recebida da plataforma de identidade da Microsoft. É definido um cookie de sessão, que pode ser utilizado para identificar o utilizador em pedidos de página subsequentes.

Saiba mais criando um aplicativo Web ASP.NET Core que inicia sessão nos utilizadores na seguinte série de tutoriais com várias partes

Além do início de sessão simples, uma aplicação de servidor Web poderá ter de aceder a outro serviço Web, como uma API REST (Representational State Transfer). Nesse caso, o aplicativo do servidor Web se envolve em um fluxo combinado do OpenID Connect e do OAuth 2.0, usando o fluxo de 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. Eles também podem ser implementados usando Gatilhos HTTP no Azure Functions. Em vez de tokens de ID e cookies de sessão, uma API da Web usa um token de acesso OAuth 2.0 para proteger seus dados 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, da seguinte forma:

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

A API da Web usa o token de acesso para verificar a identidade do chamador da API e extrair informações sobre o chamador de declarações 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 de token de acesso e referência de token de ID.

Uma API da Web pode dar aos usuários o poder de aceitar ou desativar funcionalidades ou dados específicos expondo permissões, também conhecidas como escopos. Para que um aplicativo de chamada adquira permissão para um escopo, o usuário deve consentir com o escopo durante um fluxo. A plataforma de identidade da Microsoft solicita permissão ao usuário e, em seguida, registra as permissões em todos os tokens de acesso que a API da Web recebe. A API da 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 de desktop e móveis, aplicativos de página única, daemons do lado do servidor e até mesmo outras APIs da Web. O fluxo de alto nível para uma API da Web tem esta aparência:

Mostra o fluxo de autenticação da API da Web

Para saber como proteger uma API da Web usando tokens de acesso OAuth2, confira os exemplos de código da API da Web no tutorial da API da Web protegida.

Em muitos casos, as APIs da Web também precisam fazer solicitações de saída para outras APIs da Web downstream protegidas pela plataforma de identidade da Microsoft. Para fazer isso, as APIs da Web podem aproveitar o fluxo On-Behalf-Of (OBO), que permite que a API da 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 OAuth 2.0 On-Behalf-Of.

Aplicações móveis e nativas

Os aplicativos instalados no dispositivo, como 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 entrada 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 entra. 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 OAuth 2.0 e um token de atualização. O aplicativo pode usar o token de acesso para autenticar APIs da Web em solicitações HTTP e usar o token de atualização para obter novos tokens de acesso quando os tokens de acesso mais antigos expirarem.

Mostra o fluxo de autenticação do aplicativo nativo

Nota

Se o aplicativo usa a visualização padrão do sistema webview, verifique as informações sobre a funcionalidade "Confirm My Sign-In" e o código AADSTS50199 de erro nos códigos de erro de autenticação e autorização do Microsoft Entra.

Servidor, daemons e scripts

Os aplicativos que têm processos de longa execução ou que operam sem interação com um usuário também precisam de uma maneira de acessar recursos seguros, como APIs da Web. Esses aplicativos podem autenticar e obter tokens usando a identidade do aplicativo, em vez da 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 segredo de cliente ou certificado. Para obter mais informações, consulte Aplicativo de console do daemon .NET usando a plataforma de identidade da Microsoft.

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

Mostra o fluxo de autenticação do aplicativo daemon

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

Consulte também

Agora que você está familiarizado com os tipos de aplicativos suportados pela plataforma de identidade da Microsoft, saiba mais sobre o OAuth 2.0 e o OpenID Connect para entender os componentes de protocolo usados pelos diferentes cenários.