Compartilhar via


Permissões de aplicativo e delegadas para tokens de acesso na plataforma de identidade da Microsoft

Este artigo apresenta as diferenças entre o aplicativo e as permissões delegadas para tokens de acesso na plataforma de identidade da Microsoft para ajudar a diagnosticar problemas quando os aplicativos chamam APIs Web.

Visão geral

Conforme descrito na Visão geral de permissões e consentimento na plataforma de identidade da Microsoft e no Glossário: plataforma de identidade da Microsoft, há dois tipos de permissões para um token de acesso: permissões delegadas e permissões de aplicativo. As permissões delegadas são concedidas a um usuário conectado, enquanto as permissões de aplicativo são concedidas diretamente a um aplicativo. A principal diferença é que as permissões delegadas exigem a entrada do usuário, enquanto as permissões de aplicativo não; em vez disso, o aplicativo é autenticado na ID do Microsoft Entra usando sua própria identidade de aplicativo (ID do cliente e segredo/asserção).

Independentemente dos tipos de permissão, você deve configurar permissões de API na página Registro de Aplicativo do Microsoft Entra:

  • Selecione Permissões do aplicativo se o aplicativo não precisar que nenhum usuário entre.
  • Selecione Permissões delegadas se o aplicativo exigir que um usuário entre para que o token de acesso possa ser emitido para essa entrada.

Observação

Quando você seleciona Permissões do aplicativo, o consentimento do administrador deve ser concedido para que a permissão funcione corretamente.

Tokens de tipo de permissão emitidos de fluxos de autenticação OAuth2

A ID do Microsoft Entra dá suporte a vários fluxos de autenticação OAuth2. O tipo de fluxo de autenticação que um aplicativo usa resulta em tipos específicos de permissões em um token de acesso.

Os tokens de permissão do aplicativo só podem ser obtidos do fluxo de concessão de credenciais do cliente.

Os tokens de permissão delegada só podem ser obtidos dos seguintes fluxos:

Identificar o tipo de permissão para um token de acesso

Para determinar se um token de acesso é um token de permissão delegado ou de aplicativo, inspecione as declarações de token usando uma ferramenta como jwt.ms.

Para tokens de permissão de aplicativo, as permissões estão na roles declaração:

"oid": "<oid>"
"roles": [
    "User.Read.All"
],
"sub": "<sub>"

Observação

A scp declaração está ausente nos tokens de permissão do aplicativo.

Para tokens de permissão delegada, as permissões estão na scp declaração:

"scp": "Directory.Read.All User.Read",
"sub": "<sub>",

Observação

A roles declaração ainda pode aparecer em um token de permissão delegada, mas lista as funções atribuídas ao usuário no aplicativo de API.

Identificar o tipo de permissão compatível com uma API

Entender que tipo de permissões uma API suporta é essencial. Muitos erros, como 400, 401, 403 e 500, ocorrem quando os aplicativos chamam APIs diferentes (por exemplo, Microsoft Graph e Power BI) com tokens de tipo de permissão incorretos. Para uma API, diferentes pontos de extremidade REST podem exigir diferentes tipos de permissão. Você pode consultar a documentação do endpoint da API para verificar o tipo de permissão compatível. Você também precisa avaliar se o fluxo de autenticação usado no aplicativo gera os tokens de permissão desejados.

Cenário de exemplo

API do Power BI: embora o Power BI dê suporte a permissões delegadas e de aplicativo, algumas tarefas, como exibir relatórios (exigindo a permissão Report.Read.All ), só podem ser executadas com um token delegado. Na página Registro de Aplicativo, as permissões de aplicativo dão suporte apenas a duas permissões: Tenant.Read.All e Tenant.ReadWrite.All.

Captura de tela que mostra as permissões do aplicativo para a API do Power BI.

Por outro lado, as permissões delegadas oferecem um conjunto de recursos mais avançado:

Captura de tela que mostra permissões delegadas para a API do Power BI.

Solucionar problemas ao chamar pontos de extremidade REST do Microsoft Graph

Os usuários geralmente encontram problemas quando seus aplicativos chamam pontos de extremidade REST do Microsoft Graph. As solicitações funcionam com êxito no Microsoft Graph Explorer, mas falham em seus aplicativos. Para solucionar esses problemas, verifique o seguinte:

  • Verifique o tipo de permissão que o token de acesso tem. O Microsoft Graph Explorer sempre usa um token de permissão delegada.
  • Verifique se a mesma conta de usuário é usada para entrar no Microsoft Graph Explorer e no aplicativo.
  • Verifique se o ponto de extremidade dá suporte a permissões delegadas, permissões de aplicativo ou ambas.
  • Verifique se o token de acesso tem as permissões corretas para chamar o ponto de extremidade.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.