Exercício – Criar um suplemento do Office para Excel que implemente o logon único

Concluído

Neste exercício, você criará um suplemento do Excel que adiciona uma lista dos emails recentes recebidos pelo usuário conectado no momento com Microsoft Graph em uma planilha. Esse processo usa o esquema de autenticação de SSO (logon único).

Pré-requisitos

O desenvolvimento de Suplementos do Office para o Microsoft Word requer o cliente Web ou os seguintes clientes da área de trabalho:

  • Windows v16.0.12215.20006 ( ou superior )
  • macOS v16.32.19102902 ( ou superior )

Você usará o Node.js para criar o suplemento personalizado do Word neste módulo. Os exercícios neste módulo presumem que você tenha as seguintes ferramentas instaladas em sua estação de trabalho de desenvolvedor:

Importante

Na maioria dos casos, instalar a versão mais recente das ferramentas a seguir é a melhor opção. As versões listadas aqui foram usadas quando este módulo foi publicado e testado pela última vez.

Você deve ter as versões mínimas desses pré-requisitos instaladas em sua estação de trabalho.

Importante

Este exercício é escrito para trabalhar com o Gerador yeoman para o Microsoft Office v1.8.8. Verifique se você está usando essa versão instalando uma versão específica usando o comando npm install generator-office@1.8.8 --global. Versões posteriores do gerador foram removidas e, em seguida, alteraram os scaffolding do projeto SSO que não correspondem às etapas neste laboratório.

Importante

O exemplo neste exercício destina-se a ser usado apenas como um recurso de aprendizado e não se destina a ser usado em um cenário de produção porque passa o token OAuth usado para enviar solicitações ao Microsoft Graph de volta ao cliente para fazer a chamada diretamente.

Como prática de segurança, sempre use o código ao lado do servidor para fazer chamadas pelo Microsoft Graph ou outras chamadas que exigem a passagem de um token de acesso. Nunca retorne o token OBO ao cliente para permitir que o cliente faça chamadas diretas ao Microsoft Graph. Isso ajuda a proteger o token de ser interceptado ou vazado. Para obter mais informações sobre o fluxo de protocolo adequado, consulte o diagrama de protocolo OAuth 2.0.

Criar seu projeto do suplemento

Execute o seguinte comando para criar um projeto de suplemento usando o gerador Yeoman:

yo office

Observação

Ao executar o comando yo office, você receberá informações sobre as políticas de coleta de dados de Yeoman e as ferramentas da CLI do suplemento do Office. Use as informações fornecidas para responder às solicitações como achar melhor.

Quando solicitado, forneça as seguintes informações para criar seu projeto de suplemento:

  • Selecione um tipo de projeto: projeto do painel de tarefas do suplemento do Office com suporte para logon único
  • Selecione um tipo de script: JavaScript
  • Qual será o nome do suplemento? MyExcelSsoAddin
  • Você gostaria de proporcionar suporte para qual aplicativo cliente do Office? Excel

Captura de tela dos prompts e respostas do gerador Yeoman.

Depois que você concluir o prompt, o gerador criará o projeto e instalará os componentes Node de suporte.

Registrar o aplicativo Microsoft Entra

Em seguida, registre o aplicativo Microsoft Entra e atualize o projeto para usar o aplicativo Microsoft Entra.

Dica

Para obter detalhes sobre como registrar o aplicativo Microsoft Entra manualmente, confira: Criar um suplemento do Office Node.js que usa logon único: registre o suplemento com Azure AD ponto de extremidade v2.0.

No prompt de comando, verifique se você está na pasta raiz do projeto. Em seguida, execute o seguinte comando:

npm run configure-sso

O comando iniciará um navegador e solicitará que você entre no Microsoft Entra ID. Verifique se você entra como um usuário que tem permissões para registrar um aplicativo Microsoft Entra, como um usuário atribuído à função de Administrador Global.

Após a autenticação, o script executará as seguintes tarefas:

  1. Registrar o aplicativo Microsoft Entra
  2. Definir as configurações de audiência e permissões do aplicativo
  3. Criar um novo segredo do cliente e salvá-lo no repositório secreto de estações de trabalho do desenvolvedor
  4. Atualizar o projeto com a ID do cliente do aplicativo Microsoft Entra

Captura de tela da saída da execução do script configure-sso.

Aviso

O comando configure-sso falhará se o locatário Microsoft Entra estiver configurado para autenticação multifator (MFA)/autenticação de dois fatores. Nesse caso, você precisará criar manualmente o registro do aplicativo Microsoft Entra conforme descrito no artigo Criar um suplemento do Office Node.js que usa logon único: registre o suplemento com Azure AD artigo do ponto de extremidade v2.0.

Criar e testar o aplicativo

Execute o seguinte comando em um prompt de comando para transcompilar e iniciar o processo de depuração:

npm start

Teste o suplemento no cliente da área de trabalho do Word

Após alguns instantes, o Word será carregado com o botão do suplemento na faixa de opções e carregado no painel de tarefas.

Captura de tela do suplemento no Excel.

Para testar o suplemento, selecione o botão Obter informações de perfil do usuário.

Se você ainda não tiver entrado com seu cliente do Office, será solicitado a fazê-lo.

Depois de entrar, o suplemento recuperará suas informações básicas de perfil do Microsoft Graph e as adicionará ao documento.

Captura de tela do teste bem-sucedido no Excel.

Atualizar o aplicativo para mostrar emails recentes

Agora, vamos atualizar o aplicativo do painel de tarefas para adicionar uma lista dos emails recentes recebidos pelo usuário conectado no momento com Microsoft Graph.

Atualizar as permissões do aplicativo Microsoft Entra

O aplicativo Microsoft Entra registrado deve primeiro receber permissões para o aplicativo.

Abra um navegador e navegue até o centro de administração Microsoft Entra (https://aad.portal.azure.com). Entre usando uma Conta Corporativa ou de Estudante que tenha direitos de administrador global para os locatários.

Na navegação mais à esquerda, selecione Gerenciar>permissões da API.

Adicione uma nova permissão selecionando Adicionar permissão.

Na tela Selecionar uma API, selecione Microsoft Graphe, em seguida, selecione Permissões delegadas. Pesquise e selecione a permissão Mail.Read e selecione Adicionar permissões.

Captura de tela mostrando como adicionar a permissão Mail.Read.

Em seguida, selecione Conceder consentimento do administrador para a Contoso seguido de aceitar o prompt de confirmação selecionando Sim.

Atualizar o suplemento do painel de tarefas do Excel

A próxima etapa é atualizar o código no suplemento.

Atualizar o painel de tarefas

Localize e abra ./src/taskpane/taskpane.html.

Localize o seguinte elemento HTML no painel de tarefas:

<div class="ms-firstrun-instructionstep__welcome-body">

Localize o primeiro marcador no HTML e altere span conteúdo do elemento para:

<span class="ms-ListItem-primaryText">Click the <b>Get my last 10 emails</b> button.</span>

Localize o último marcador no HTML e altere span conteúdo do elemento para:

<span class="ms-ListItem-primaryText">Your last 10 emails will be displayed in the document.</span>

Localize o botão e altere o texto para: Get last 10 emails.

Atualizar o código do painel de tarefas

Agora, atualize o código que receberá os últimos 10 emails do usuário.

Localize e abra o arquivo ./src/helpers/ssoauthhelper.js.

Encontre a seguinte linha no método getGraphData():

const response = await sso.makeGraphApiCall(exchangeResponse.access_token);

Exclua essa linha e a substitua pelo código a seguir. Esse código usa um método diferente no auxiliar de logon único para enviar uma solicitação específica para o Microsoft Graph:

const endpoint = "/me/messages";
const urlParams = "?$select=receivedDateTime,subject,isRead&$orderby=receivedDateTime&$top=10";
const response = await sso.getGraphData(exchangeResponse.access_token, endpoint, urlParams);

Em seguida, localize e abra o arquivo ./src/helpers/documentHelper.js.

Localize o método writeDataToExcel(). Você substituirá a maior parte do código nesse método, mas deseja manter a estrutura básica. Exclua o conteúdo do método e substitua-o pelo seguinte código:

return Excel.run(function(context) {
  const sheet = context.workbook.worksheets.getActiveWorksheet();

  // TODO

  return context.sync();
});

Primeiro, substitua o // TODO pelo seguinte código para criar alguns títulos de coluna na planilha:

const rangeHeading = sheet.getRange("A1:D1");
rangeHeading.values = [["Received Date/Time", "Subject", "Read?", "ID"]];

Em seguida, adicione o código a seguir após o código anterior que você acabou de adicionar. Isso obterá os resultados da solicitação Microsoft Graph e os converterá em uma matriz multidimensional para gravá-lo na planilha.

Em seguida, ele grava os resultados na planilha e formatada as colunas para que todos os dados sejam visíveis:

// convert data to a list
const mailResults = result.value;
for (let i = 0; i < mailResults.length; i++) {
  if (mailResults[i] !== null) {
    let innerArray = [];
    innerArray.push(mailResults[i].receivedDateTime);
    innerArray.push(mailResults[i].subject);
    innerArray.push(mailResults[i].isRead);
    innerArray.push(mailResults[i].id);

    let data = [];
    data.push(innerArray);
    let rangeData = sheet.getRange(`A${i+2}:D${i+2}`);
    rangeData.values = data;
  }
}

rangeHeading.format.autofitColumns();

Criar e testar o aplicativo

Execute o seguinte comando em um prompt de comando para transcompilar e iniciar o processo de depuração:

npm start

Testar o suplemento no Excel

Após alguns instantes, o Word será carregado com o botão do suplemento na faixa de opções e carregado no painel de tarefas. Vamos testar isso no cliente Web do Excel.

Abra um navegador e navegue até o OneDrive (https://onedrive.com). Entre usando uma Conta Corporativa ou de Estudante.

Adicione uma nova pasta de trabalho do Excel selecionando o botão Novo e, em seguida, selecione Pasta de trabalho do Excel.

Instale o suplemento do Word ao fazer o sideload dele. Na faixa de opções, selecione Inserir>Suplementos.

Na caixa de Suplementos do Office, selecione Carregar Meu Suplemento.

Selecione o arquivo manifest.xml na raiz do projeto e selecione Carregar.

O Microsoft Word realizará o sideload do suplemento e exibirá o botão Mostrar Painel de Tarefas na faixa de opções, assim como o cliente da área de trabalho.

Selecione o botãoMostrar painel de tarefas e, em seguida, selecione o botãoObter os últimos 10 emails.

Como você já está conectado, após alguns instantes, você verá os emails recentes aparecerem na planilha sem precisar entrar.

Captura de tela do suplemento final no Excel.

Teste o seu conhecimento

1.

Qual é a finalidade da opção de autorização forMSGraphAccess no método getAccessToken() serviço?

2.

Quais detalhes estão listados no elemento <WebApplicationInfo> no arquivo manifest.xml de um suplemento do Office?

3.

Qual é a finalidade da opção de autorização allowSignInPrompt no método getAccessToken() serviço?