Compartilhar via


Criar um serviço de acesso de usuário confiável com o Azure Functions

Este artigo descreve como usar o Azure Functions para criar um serviço de acesso de usuário confiável.

Importante

O ponto de extremidade criado no final deste tutorial não é seguro. Leia sobre os detalhes de segurança no artigo Segurança de funções do Azure. Para garantir que agentes maliciosos não possam provisionar tokens, você precisa adicionar segurança ao ponto de extremidade.

Código de download

Encontre o código finalizado para este guia de início rápido no GitHub

Pré-requisitos

Visão geral

Diagrama para arquitetura de serviço confiável

Para este tutorial, vamos criar uma Função do Azure que funcionará como um serviço de provisionamento de token confiável. Você pode usar este tutorial para inicializar seu próprio serviço de provisionamento de token.

Esse serviço é responsável por autenticar usuários nos Serviços de Comunicação do Azure. Os usuários dos seus aplicativos de Serviços de Comunicação precisarão de um Access Token para participarem de conversas de chat e chamadas VoIP. A Função do Azure atuará como um middleware confiável entre o usuário e os Serviços de Comunicação. Isso permite que você provisione tokens de acesso sem expor a cadeia de conexão do recurso aos usuários.

Para obter mais informações, confira a documentação conceitual de arquitetura cliente-servidor e autenticação e autorização.

Configurando

Configuração do Azure Functions

Primeiro, vamos configurar a estrutura básica para nossa função do Azure. Instruções passo a passo sobre a configuração podem ser encontradas aqui: Criar uma função usando o Visual Studio Code

Nossa Função do Azure requer a seguinte configuração:

  • Linguagem: JavaScript
  • Modelo: Gatilho de HTTP
  • Nível de autorização: anônimo (poderá ser alternado mais tarde se você preferir um modelo de autorização diferente)
  • Nome da função: definido pelo usuário

Depois de seguir as instruções do Azure Functions com a configuração acima, você deve ter um projeto no Visual Studio Code para a Função do Azure com um arquivo index.js contendo a própria função. O código nesse arquivo deve ser o seguinte:


module.exports = async function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.');

    const name = (req.query.name || (req.body && req.body.name));
    const responseMessage = name
        ? "Hello, " + name + ". This HTTP triggered function executed successfully."
        : "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";

    context.res = {
        // status: 200, /* Defaults to 200 */
        body: responseMessage
    };
}

Agora, vamos continuar instalando as bibliotecas dos Serviços de Comunicação do Azure.

Instalar bibliotecas dos serviços de comunicação

Usaremos a biblioteca Identity para gerar User Access Tokens.

Use o comando npm install para instalar o SDK de Identidade dos Serviços de Comunicação do Azure para JavaScript.


npm install @azure/communication-identity --save

A opção --save lista a biblioteca como uma dependência no arquivo package.json.

Na parte superior do arquivo index.js, importe a interface para o CommunicationIdentityClient

const { CommunicationIdentityClient } = require('@azure/communication-identity');

Geração de token de acesso

Para permitir que nossa Função do Azure gere User Access Tokens, primeiro vamos precisar usar a cadeia de conexão para o recurso de Serviços de Comunicação.

Acesse o guia de início rápido provisionamento de recursos para obter mais informações sobre como recuperar a cadeia de conexão.

const connectionString = 'INSERT YOUR RESOURCE CONNECTION STRING'

Em seguida, modificaremos a função original para gerar User Access Tokens.

User Access Tokens são gerados criando um usuário pelo método createUser. Depois que o usuário é criado, podemos usar o método getToken para gerar um token para ele, que a função do Azure retorna.

Para este exemplo, vamos configurar o escopo do token para voip. Outros escopos podem ser necessários para seu aplicativo. Saiba mais sobre os escopos

module.exports = async function (context, req) {
    let tokenClient = new CommunicationIdentityClient(connectionString);

    const user = await tokenClient.createUser();

    const userToken = await tokenClient.getToken(user, ["voip"]);

    context.res = {
        body: userToken
    };
}

Para CommunicationUser de Serviços de Comunicação existente, você pode ignorar a etapa de criação e apenas gerar um token de acesso. Veja mais detalhes no guia de início rápido para criar tokens de acesso do usuário.

Testar a Função do Azure

Execute a Função do Azure localmente usando F5. Isso inicializa a Função do Azure localmente e a torna acessível por meio de: http://localhost:7071/api/FUNCTION_NAME. Confira a documentação adicional sobre execução local

Abra a URL no navegador e veja um corpo da resposta com a ID de usuário de comunicação, o token e o término do token.

Captura de tela mostrando um exemplo de resposta para a Função do Azure criada.

Implantar a Função no Azure

Para implantar sua Função do Azure, siga as instruções passo a passo

Em resumo, você precisará:

  1. Entrar no Azure por meio do Visual Studio
  2. Publicar seu projeto em sua conta do Azure. Aqui, você precisará escolher uma assinatura existente.
  3. Crie um recurso de Função do Azure usando o assistente do Visual Studio ou use um recurso existente. Para um novo recurso, será necessário configurá-lo para a região, o runtime e o identificador exclusivo desejados.
  4. Aguarde o fim da implantação
  5. Execute a função 🎉

Executar a Função do Azure

Executar a Função do Azure usando a URL http://<function-appn-ame>.azurewebsites.net/api/<function-name>

Você pode encontrar a URL clicando com o botão direito do mouse na função em Visual Studio Code e copiando a URL da Função.

Para obter mais informações sobre como executar a função do Azure

Como proteger as funções do Azure

Como parte da configuração de um serviço confiável para provisionar tokens de acesso aos usuários, precisamos levar em conta a segurança desse ponto de extremidade a fim de garantir que agentes maliciosos não possam criar tokens aleatoriamente para o serviço. O Azure Functions fornece recursos internos de segurança que podem ser usados para proteger o ponto de extremidade com diferentes tipos de políticas de autenticação. Leia mais sobre a Segurança de funções do Azure

Limpar os recursos

Se quiser limpar e remover uma assinatura dos Serviços de Comunicação, exclua o recurso ou o grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele. Você pode saber mais sobre como limpar os recursos do Serviço de Comunicação do Azure e como limpar os Recursos de Função do Azure.

Próximas etapas

Você também pode querer: