Exercício - Autorizar o acesso à API do Microsoft Graph com MSAL

Concluído

Neste exercício, você configura o aplicativo com permissões e usa o MSAL para acessar informações de perfil de usuário da API do Microsoft Graph (MS Graph).

Adicionar permissões do Microsoft Graph ao registro do aplicativo

Os serviços Web protegidos pelo Microsoft Entra ID definem um conjunto de permissões que fornecem acesso à funcionalidade da API e aos dados expostos por esse serviço. Antes que um aplicativo possa acessar dados ou agir em nome de um usuário, ele deve solicitar que essas permissões sejam aprovadas pelos usuários. Você pode atribuir essas permissões de API ao registro do seu aplicativo no portal do Azure. Aqui estão as etapas para atribuir permissões da API do Microsoft Graph ao seu aplicativo.

  1. Na tela Registros de aplicativos, selecione Permissões de API para adicionar acesso às APIs de que seu aplicativo precisa.

    Captura de tela que mostra o menu do painel de permissões de API de um aplicativo registrado com o Microsoft Entra ID no portal do Azure.

    • Selecione Adicionar uma permissão.

    • Verifique se a guia APIs da Microsoft está selecionada.

    • Na seção APIs da Microsoft comumente usadas, selecione Microsoft Graph e, em seguida, selecione Permissões delegadas.

    • Na seção Permissões delegadas, role para baixo e selecione User.Read na lista. Essa permissão específica é para acessar as informações do usuário conectado a https://graph.microsoft.com/v1.0/me partir do ponto de extremidade.

    • Selecione Adicionar permissões.

      Captura de ecrã que mostra o painel de permissões da API de uma aplicação registada com o Microsoft Entra ID no portal do Azure.

Executar a aplicação

Você pode tentar a chamada da API do Graph no aplicativo que você executou a partir do exercício anterior.

  1. Abra o navegador e navegue até http://localhost:8080/msal4j-servlet-graph/. Se ainda não tiver sessão iniciada, será redirecionado para iniciar sessão com o Microsoft Entra ID. Ao entrar com êxito, você verá uma página conforme mostrado na imagem a seguir.

    Captura de tela que mostra o botão para chamar o gráfico exibido na página depois de entrar com êxito no aplicativo de exemplo.

  2. Selecione Gráfico de chamadas para fazer uma chamada para o ponto de extremidade do /me Microsoft Graph e veja os detalhes do usuário exibidos.

Visão geral do código para acesso ao Microsoft Graph

Você pode encontrar o código para acessar a API do Microsoft Graph na classe CallGraphServlet.java servlet no diretório msal4j/callgraphwebapp/ do projeto de exemplo. Ele define o /call_graph ponto de extremidade no aplicativo, que faz chamadas autorizadas para o ponto de extremidade da API https://graph.microsoft.com/v1.0/me do Microsoft Graph para recuperar as informações de perfil do usuário conectado. Aqui estão mais detalhes do código de acesso do Graph.

  1. No arquivo ./src/main/resources/authentication.properties, o valor de aad.scopes é definido como o escopo User.Read.

    Os escopos informam ao ID do Microsoft Entra o nível de acesso que o aplicativo está solicitando e mapeiam para as permissões no registro do aplicativo. Com base nos escopos solicitados, o Microsoft Entra ID apresenta uma caixa de diálogo de consentimento ao usuário ao entrar. Se o usuário consentir com um ou mais escopos, eles serão codificados no resultado access_token retornado na resposta de autenticação.

  2. Quando o usuário navega para /call_graph, o aplicativo cria uma instância do IGraphServiceClient (Microsoft Graph SDK Java), passando o token de acesso do usuário conectado. O cliente Graph a partir daqui coloca o token de acesso nos cabeçalhos de Autorização de suas solicitações. Em seguida, o aplicativo solicita que o Graph Client chame o ponto de /me extremidade do Microsoft Graph para produzir detalhes para o usuário conectado no momento.

    O código a seguir é tudo o que é necessário para um desenvolvedor de aplicativos escrever para acessar o ponto de extremidade, desde que ele já tenha um token de acesso válido para o /me Graph Service com o User.Read escopo.

    //CallGraphServlet.java
    User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();