Exercício - Integrar um plug-in de API com uma API protegida com uma chave

Concluído

Os plug-ins de API para o Microsoft 365 Copilot permitem a integração com APIs protegidas por uma chave. Para manter a chave de API segura, registre-a no cofre do Teams. Em tempo de execução, o Microsoft 365 Copilot executa o plug-in, recupera a chave de API do cofre e a usa para chamar a API. Seguindo esse processo, a chave de API permanece segura e nunca é exposta ao cliente.

Criar um novo projeto

Comece criando um novo plug-in de API para o Microsoft 365 Copilot. Abra o Visual Studio Code.

No Visual Studio Code:

  1. Na Barra de Atividades (barra lateral), ative a extensão Microsoft 365 Agents Toolkit.
  2. No painel de extensão Microsoft 365 Agents Toolkit , escolha Criar um novo aplicativo.
  3. Na lista de modelos de projeto, escolha Copilot Agent.
  4. Na lista de recursos do aplicativo, escolha Declarative Agent.
  5. Escolha a opção Adicionar plug-in .
  6. Escolha a opção Iniciar com uma nova API .
  7. Na lista de tipos de autenticação, escolha Chave de API (Autenticação de Token de Portador).
  8. Como linguagem de programação, escolha TypeScript.
  9. Escolha uma pasta para armazenar o projeto.
  10. Nomeie seu projeto da-repairs-key.

O Microsoft 365 Agents Toolkit cria um novo projeto que inclui um agente declarativo, um plug-in de API e uma API protegida por uma chave.

Examinar a configuração de autenticação de chave de API

Antes de continuar, examine a configuração de autenticação de chave de API no projeto gerado.

Examinar a definição de API

Primeiro, veja como a autenticação de chave de API é definida na definição de API.

No Visual Studio Code:

  1. Abra o arquivo appPackage/apiSpecificationFile/repair.yml . Este arquivo contém a definição de OpenAPI para a API.

  2. Na seção components.securitySchemes , observe a propriedade apiKey :

    components:
      securitySchemes:
        apiKey:
          type: http
          scheme: bearer
    

    A propriedade define um esquema de segurança que usa a chave de API como um token de portador no cabeçalho da solicitação de autorização.

  3. Localize a propriedade paths./repairs.get.security . Observe que ele faz referência ao esquema de segurança apiKey .

    [...]
    paths:
      /repairs:
        get:
          operationId: listRepairs
          [...]
          security:
            - apiKey: []
    [...] 
    

Examine a implementação da API

Em seguida, veja como a API valida a chave de API em cada solicitação.

No Visual Studio Code:

  1. Abra o arquivo src/functions/repairs.ts .

  2. Na função de manipulador de reparos , localize a seguinte linha que rejeita todas as solicitações não autorizadas:

    if (!isApiKeyValid(req)) {
      // Return 401 Unauthorized response.
      return {
        status: 401,
      };
    } 
    
  3. A função isApiKeyValid é implementada ainda mais no arquivo repairs.ts:

    function isApiKeyValid(req: HttpRequest): boolean {
      const apiKey = req.headers.get("Authorization")?.replace("Bearer ", "").trim();
      return apiKey === process.env.API_KEY;
    }
    

    A função verifica se o cabeçalho de autorização contém um token de portador e o compara com a chave de API definida na variável de ambiente API_KEY .

Este código mostra uma implementação simplista da segurança de chave de API, mas ilustra como a segurança de chave de API funciona na prática.

Examinar a configuração da tarefa do cofre

Neste projeto, você usará o Microsoft 365 Agents Toolkit para adicionar a chave de API ao cofre. O Microsoft 365 Agents Toolkit registra a chave de API no cofre usando uma tarefa especial na configuração do projeto.

No Visual Studio Code:

  1. Abra o arquivo ./teampsapp.local.yml .

  2. Na seção provisionar , localize a tarefa apiKey/register .

    # Register API KEY
    - uses: apiKey/register
      with:
        # Name of the API Key
        name: apiKey
        # Value of the API Key
        primaryClientSecret: ${{SECRET_API_KEY}}
        # Teams app ID
        appId: ${{TEAMS_APP_ID}}
        # Path to OpenAPI description document
        apiSpecPath: ./appPackage/apiSpecificationFile/repair.yml
      # Write the registration information of API Key into environment file for
      # the specified environment variable(s).
      writeToEnvironmentFile:
        registrationId: APIKEY_REGISTRATION_ID
    

    A tarefa pega o valor da variável de projeto SECRET_API_KEY , armazenada no arquivo r env/.env.local.usee a registra no cofre. Em seguida, ele pega a ID de entrada do cofre e a grava no arquivo de ambiente env/.env.local. O resultado dessa tarefa é uma variável de ambiente chamada APIKEY_REGISTRATION_ID. O Microsoft 365 Agents Toolkit grava o valor dessa variável no arquivo appPackages/ai-plugin.json que contém a definição do plug-in. Em tempo de execução, o agente declarativo que carrega o plug-in da API usa essa ID para recuperar a chave de API do cofre e chamar a API com segurança.

Configurar chave de API para desenvolvimento local

Antes de testar o projeto, você precisa definir uma chave de API para sua API. Em seguida, armazene a chave de API no cofre e registre a ID de entrada do cofre em seu plug-in de API. Para desenvolvimento local, armazene a chave de API em seu projeto e use o Microsoft 365 Agents Toolkit para registrá-la no cofre para você.

No Visual Studio Code:

  1. Abra o painel Terminal .

  2. Em uma linha de comando:

    1. Restaure as dependências do projeto, executando npm installo .
    2. Gere uma nova chave de API executando: npm run keygen.
    3. Copie a chave gerada para a área de transferência.
  3. Abra o arquivo env/.env.local.user .

  4. Atualize a propriedade SECRET_API_KEY para a chave de API recém-gerada. A propriedade atualizada tem a seguinte aparência:

    SECRET_API_KEY=your_key
    
  5. Salve suas alterações.

Sempre que você constrói o projeto, o Microsoft 365 Agents Toolkit atualiza automaticamente a chave de API no cofre e atualiza seu projeto com a ID de entrada do cofre.

Teste o agente declarativo com o plug-in de API no Microsoft 365 Copilot

A etapa final é testar o agente declarativo com o plug-in de API no Microsoft 365 Copilot.

No Visual Studio Code:

  1. Na Barra de Atividades, ative a extensão Microsoft 365 Agents Toolkit .

  2. No painel de extensão do Kit de Ferramentas de Agentes do Microsoft 365 , na seção Contas , verifique se você está conectado ao seu locatário do Microsoft 365 com o Copilot habilitado.

    Captura de tela do Kit de Ferramentas de Agentes do Microsoft 365 mostrando o status da conexão com o Microsoft 365.

  3. Na Barra de Atividades, alterne para o modo de exibição Executar e Depurar.

  4. Na lista de configurações, escolha Depurar no Copilot (Edge) e pressione o botão de reprodução para iniciar a depuração.

    Captura de tela da opção de depuração no Visual Studio Code.

    O Visual Studio Code abre um novo navegador da Web com o Microsoft 365 Copilot. Se receber a solicitação, entre com sua conta do Microsoft 365.

No navegador da Web:

  1. No painel lateral, selecione o agente da-repairs-keylocal .

    Captura de tela do agente personalizado exibido no Microsoft 365 Copilot.

  2. Na caixa de texto do prompt, digite What repairs are assigned to Karin? e envie o prompt.

  3. Confirme que deseja enviar dados para o plug-in da API usando o botão Sempre permitir .

    Captura de tela do prompt para permitir o envio de dados para a API.

  4. Aguarde a resposta do agente.

    Captura de tela da resposta do agente personalizado ao prompt do usuário.

Interrompa a sessão de depuração no Visual Studio Code quando terminar de testar.