Partilhar via


Criar um serviço de autenticação usando o Azure Functions

Este artigo descreve como usar as Azure Functions para construir um serviço de acesso seguro para utilizadores.

Important

O ponto de extremidade criado neste tutorial não é seguro. Certifique-se de ler sobre os detalhes de segurança no artigo Segurança das Funções do Azure. Precisam adicionar segurança ao terminal para garantir que agentes mal-intencionados não consigam fornecer tokens.

Este artigo descreve como:

  • Configurar uma função.
  • Gerar tokens de acesso.
  • Teste a função.
  • Implante e execute a função.

Transferir código

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

Prerequisites

Overview

Diagrama que mostra a arquitetura de serviços confiáveis.

Para este tutorial, você cria uma aplicação de função que serve como um serviço confiável de provisionamento de tokens. Pode usar este tutorial para iniciar o seu próprio serviço de provisionamento de tokens.

Este serviço é responsável por autenticar os utilizadores nos Serviços de Comunicação. Os usuários de seus aplicativos de Serviços de Comunicação precisam de um token de acesso para participar de threads de bate-papo e chamadas VoIP. A função funciona como um intermediário de confiança entre o utilizador e os Serviços de Comunicação. Pode fornecer tokens de acesso sem expor a string de conexão do seu recurso aos seus utilizadores.

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

Configurar uma função

Esta seção descreve os procedimentos para configurar uma função.

Configuração do Azure Functions

Primeiro, vamos configurar a estrutura básica da função. Para obter instruções passo a passo para a configuração, consulte Início Rápido: Criar uma função C# no Azure usando o Visual Studio Code.

A função requer a seguinte configuração:

  • Idioma: JavaScript
  • Modelo: HTTP Trigger
  • Nivel de Autorização: Anónimo (se preferir um modelo de autorização diferente, pode alterá-lo mais tarde)
  • Function Name: Definido pelo usuário

Depois de seguir as instruções em Início Rápido: Criar uma função C# no Azure usando o Visual Studio Code com a configuração mencionada, deverá ter um projeto no Visual Studio Code para a função com um ficheiro index.js que contém a própria função. O código a seguir dentro do arquivo deve ser:


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
    };
}

O próximo passo é instalar as bibliotecas dos Serviços de Comunicação.

Instalar bibliotecas de Serviços de Comunicação

Você usa a biblioteca Identity para gerar tokens de acesso de utilizador.

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


npm install @azure/communication-identity --save

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

No topo do ficheiro index.js, importe a interface para o parâmetro CommunicationIdentityClient.

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

Gerar tokens de acesso

Para permitir que a sua função gere tokens de acesso de utilizadores, primeiro precisa de usar a string de conexão para o seu recurso de Serviços de Comunicação.

Para mais informações sobre como recuperar a sua string de conexão, consulte Introdução rápida: Criar e gerir recursos dos Serviços de Comunicação.

const connectionString = 'INSERT YOUR RESOURCE CONNECTION STRING'

Em seguida, modifique a sua função original para gerar tokens de acesso de utilizador.

Para gerar tokens de acesso para usuários, use o método createUser para criar um usuário. Depois de o utilizador ser criado, utilize o método getToken para gerar um token para esse utilizador, que a função retorna.

Neste exemplo, configure o âmbito do token para voip. Outros escopos podem ser necessários para a sua aplicação. Para saber mais sobre os escopos, consulte Create and manage access tokens.

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 o parâmetro existente dos Serviços de Comunicação CommunicationUser, pode ignorar o passo de criação e gerar um token de acesso. Para obter mais informações, consulte Criar e gerenciar tokens de acesso.

Testar a função

Execute a função localmente usando F5. Esta ação inicializa a função localmente e torna-a acessível através de http://localhost:7071/api/FUNCTION_NAME. Para mais informações sobre como executar localmente, consulte Quickstart: Create a C# function in Azure by using Visual Studio Code.

Abra o URL no(s) seu(s) navegador(es) e verá um corpo de resposta com o ID de Utilizador de Comunicação, o token e a data de expiração do token.

Captura de ecrã que mostra um exemplo de resposta para a função criada.

Implementar a função no Azure

Para implementar a sua função, siga as instruções passo a passo em Início Rápido: Criar uma função C# no Azure usando o Visual Studio Code.

Em resumo, você precisa:

  1. Entre no Azure a partir do Visual Studio.
  2. Publique o seu projeto na sua conta Azure. Aqui, precisa escolher uma subscrição existente.
  3. Crie um novo recurso de função utilizando o assistente do Visual Studio ou um recurso existente. Para um novo recurso, precisa configurá-lo para a região desejada, tempo de execução e identificador único.
  4. Aguarde a conclusão da implementação.
  5. Execute a função.

Execute a função

Execute a função utilizando o URL http://<function-appn-ame>.azurewebsites.net/api/<function-name>.

Para localizar a URL, clique com o botão direito do mouse na função no Visual Studio Code e copie a URL da função.

Para mais informações sobre como executar a sua função, consulte Quickstart: Create a C# function in Azure by using Visual Studio Code.

Proteja o terminal

Como parte da configuração de um serviço confiável para fornecer tokens de acesso aos usuários, é necessário considerar a segurança desse endpoint para garantir que nenhum ator malicioso possa criar tokens indevidamente para o seu serviço. O Azure Functions fornece funcionalidades de segurança integradas que pode usar para proteger o endpoint, utilizando diferentes tipos de políticas de autenticação. Para mais informações, consulte Azure Functions security.

Libertar recursos

Se quiser limpar e remover uma subscrição dos Serviços de Comunicação Azure, pode eliminar o recurso ou o grupo de recursos. Eliminar o grupo de recursos também apaga quaisquer outros recursos associados a ele. Pode saber mais sobre como limpar os recursos do Communication Service e limpar os recursos do Azure Functions.