Integrar a Função do Azure

Introdução

Este tutorial fornece diretrizes detalhadas sobre como configurar uma Função do Azure para receber informações relacionadas ao usuário. É altamente recomendável configurar uma Função do Azure. Isso ajuda a evitar o hard-coding dos parâmetros de aplicativo no Contoso (como ID do usuário e token de usuário). Essas informações são altamente confidenciais. Mais importante, atualizamos os tokens de usuário periodicamente no back-end. O hard-coding da combinação de ID do usuário e token requer a edição do valor após cada atualização.

Pré-requisitos

Antes de começar, é preciso:

Configuração de funções

  1. Instale a extensão Função do Azure no Visual Studio Code. Você pode instalá-la no navegador do plug-in do Visual Studio Code ou seguir este link
  2. Configure um aplicativo local de Função do Azure seguindo este link. Precisamos criar uma função local usando o modelo de gatilho HTTP em JavaScript.
  3. Instale as bibliotecas dos Serviços de Comunicação do Azure. Usaremos a biblioteca de identidades para gerar Tokens de Acesso do Usuário. Execute o comando npm install no diretório de aplicativo local da Função do Azure para instalar o SDK de identidade dos Serviços de Comunicação do Azure para JavaScript.
    npm install @azure/communication-identity --save
  1. Modifique o arquivo index.js para que ele se assemelhe ao código abaixo:
    const { CommunicationIdentityClient } = require('@azure/communication-identity');
    const connectionString = '<your_connection_string>'
    const acsEndpoint = "<your_ACS_endpoint>"
    
    module.exports = async function (context, req) {
        let tokenClient = new CommunicationIdentityClient(connectionString);
    
        const userIDHolder = await tokenClient.createUser();
        const userId = userIDHolder.communicationUserId
    
        const userToken = await (await tokenClient.getToken(userIDHolder, ["chat"])).token;
    
        context.res = {
            body: {
                acsEndpoint,
                userId,
                userToken
            }
        };
    }

Explicação para o código acima: a primeira linha importa a interface para o CommunicationIdentityClient. A cadeia de conexão na segunda linha pode ser encontrada no recurso dos Serviços de Comunicação do Azure no portal do Azure. O ACSEndpoint é a URL do recurso Serviços de Comunicação do Azure que foi criado.

  1. Abra a pasta local de Função do Azure no Visual Studio Code. Abra o index.js e execute a Função do Azure local. Um ponto de extremidade local de Função do Azure será criado e impresso no terminal. A mensagem impressa é semelhante a:
Functions:
HttpTrigger1: [GET,POST] http://localhost:7071/api/HttpTrigger1

Abra o link em um navegador. O resultado será semelhante a este exemplo:

    {
      "acsEndpoint": "<Azure Function endpoint>",
      "userId": "8:acs:a636364c-c565-435d-9818-95247f8a1471_00000014-f43f-b90f-9f3b-8e3a0d00c5d9",
      "userToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOmE2MzYzNjRjLWM1NjUtNDM1ZC05ODE4LTk1MjQ3ZjhhMTQ3MV8wMDAwMDAxNC1mNDNmLWI5MGYtOWYzYi04ZTNhMGQwMGM1ZDkiLCJzY3AiOjE3OTIsImNzaSI6IjE2Njc4NjI3NjIiLCJleHAiOjE2Njc5NDkxNjIsImFjc1Njb3BlIjoiY2hhdCIsInJlc291cmNlSWQiOiJhNjM2MzY0Yy1jNTY1LTQzNWQtOTgxOC05NTI0N2Y4YTE0NzEiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY3ODYyNzYyfQ.t-WpaUUmLJaD0V2vgn3M5EKdJUQ_JnR2jnBUZq3J0zMADTnFss6TNHMIQ-Zvsumwy14T1rpw-1FMjR-zz2icxo_mcTEM6hG77gHzEgMR4ClGuE1uRN7O4-326ql5MDixczFeIvIG8s9kAeJQl8N9YjulvRkGS_JZaqMs2T8Mu7qzdIOiXxxlmcl0HeplxLaW59ICF_M4VPgUYFb4PWMRqLXWjKyQ_WhiaDC3FvhpE_Bdb5U1eQXDw793V1_CRyx9jMuOB8Ao7DzqLBQEhgNN3A9jfEvIE3gdwafpBWlQEdw-Uuf2p1_xzvr0Akf3ziWUsVXb9pxNlQQCc19ztl3MIQ"
    }
  1. Implante a função local na nuvem. Mais detalhes podem ser encontrados nesta documentação.

  2. Teste a Função do Azure implantada. Primeiro, localize a Função do Azure no portal do Azure. Em seguida, use o botão "Obter URL da Função" para obter o ponto de extremidade de Função do Azure. O resultado que você vê deve ser semelhante ao que foi mostrado na etapa 5. O ponto de extremidade da Função do Azure será usado no aplicativo para inicializar os parâmetros de aplicativo.

  3. Implemente UserTokenClient, que é usado para chamar o recurso Função do Azure de destino e obter o ponto de extremidade dos Serviços de Comunicação do Azure, a ID do usuário e o token do usuário do objeto JSON retornado. Consulte o aplicativo de exemplo para uso.

Guia de Solução de Problemas

  1. Se a extensão Função do Azure não implantou a função local na nuvem do Azure, provavelmente foi devido à versão do Visual Studio Code e à extensão Função do Azure que está sendo usada com um bug. Esta combinação de versão foi testada para funcionar: versão do Visual Studio Code 1.68.1 e versão da extensão Função do Azure 1.2.1.
  2. O local para inicializar as constantes de aplicativo é difícil, mas importante. Verifique duas vezes o início rápido de chat para Android. Mais especificamente, a nota de destaque na seção "Configurar constantes do aplicativo" e a comparação com o aplicativo de exemplo da versão que você está consumindo.

(Opcional) proteger o ponto de extremidade da Função do Azure

Para fins de demonstração, esse exemplo usa um ponto de extremidade publicamente acessível por padrão para buscar um token dos Serviços de Comunicação do Azure. Para cenários de produção, uma opção é usar seu próprio ponto de extremidade protegido para provisionar seus próprios tokens.

Com a configuração extra, este exemplo dá suporte à conexão com um ponto de extremidade protegido do Microsoft Entra para que o log do usuário seja necessário para que o aplicativo busque um token dos Serviços de Comunicação do Azure. O usuário precisará entrar com a conta Microsoft para acessar o aplicativo. Essa configuração aumenta o nível de segurança, embora seja necessário que os usuários façam logon. Decida se deseja habilitá-la com base nos casos de uso.

Observe que, no momento, não oferecemos suporte ao Microsoft Entra ID no código de exemplo. Siga os links abaixo para habilitá-lo no seu aplicativo e na Função do Azure:

Registre seu aplicativo em Microsoft Entra ID (usando as configurações da plataforma Android).

Configure seu aplicativo do Serviço de Aplicativo ou do Azure Functions para usar o logon do Microsoft Entra ID.