Integrar a função do Azure

Introdução

Este tutorial fornece orientações detalhadas sobre como configurar uma Função do Azure para receber informações relacionadas ao usuário. A configuração de uma Função do Azure é altamente recomendada. Isso ajuda a evitar parâmetros de aplicativo de codificação no aplicativo Contoso (como ID de usuário e token de usuário). Esta informação é altamente confidencial. Mais importante ainda, atualizamos os tokens de usuário periodicamente no back-end. A codificação rígida do ID do usuário e da combinação de token requer a edição do valor após cada atualização.

Pré-requisitos

Antes de começar, certifique-se de:

Configuração de funções

  1. Instale a extensão Azure Function no Visual Studio Code. Você pode instalá-lo a partir do navegador de plug-in do Visual Studio Code ou seguindo este link
  2. Configure um aplicativo local do Azure Function 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 de Usuário. Execute o comando npm install no diretório local do aplicativo Azure Function 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 index.js arquivo para que ele se pareça com o 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 em seu recurso dos Serviços de Comunicação do Azure no portal do Azure. A ACSEndpoint é a URL do recurso dos Serviços de Comunicação do Azure que foi criado.

  1. Abra a pasta local Azure Function no Visual Studio Code. Abra e index.js execute a Função do Azure local. Um ponto de extremidade local do Azure Function 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 sua 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 da Função do Azure. O resultado que você vê deve ser semelhante ao que foi mostrado na etapa 5. O ponto de extremidade do Azure Function será usado no aplicativo para inicializar parâmetros do aplicativo.

  3. Implemente UserTokenCliento , que é usado para chamar o recurso de 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 de usuário do objeto JSON retornado. Consulte o aplicativo de exemplo para uso.

Guia de resolução de problemas

  1. Se a extensão da Função do Azure não conseguiu implantar a função local na nuvem do Azure, é provável que seja devido à versão do Visual Studio Code e da extensão da Função do Azure que está sendo usada ter um bug. Esta combinação de versão foi testada para funcionar: versão 1.68.1 do Visual Studio Code e versão 1.2.1da extensão Azure Function.
  2. O local para inicializar constantes de aplicativo é complicado, mas importante. Verifique novamente o início rápido do chat Android. Mais especificamente, a nota de realce na seção "Configurar constantes de aplicativo" e compare com o aplicativo de exemplo da versão que você está consumindo.

(Opcional) proteger o ponto de extremidade do Azure Function

Para fins de demonstração, este exemplo usa um ponto de extremidade acessível publicamente 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 endpoint seguro para provisionar seus próprios tokens.

Com configuração extra, este exemplo dá suporte à conexão a 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 utilizador terá de iniciar sessão com a conta Microsoft para aceder à aplicação. Esta configuração aumenta o nível de segurança enquanto os utilizadores têm de iniciar sessão. Decida se deseja habilitá-lo com base nos casos de uso.

Observe que atualmente não suportamos o Microsoft Entra ID no código de exemplo. Siga os links abaixo para habilitá-lo em seu aplicativo e no Azure Function:

Registe a sua aplicação em Microsoft Entra ID (utilizando as definições da plataforma Android).

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