Compartilhar via


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

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

Important

O ponto de extremidade criado neste tutorial não é seguro. Leia os detalhes de segurança no artigo de segurança do Azure Functions . Você precisa adicionar segurança ao endpoint para garantir que agentes mal-intencionados não possam provisionar tokens.

Esse artigo descreve como:

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

Código de download

Encontre o código finalizado para este tutorial rápido no GitHub.

Prerequisites

Overview

Diagrama que mostra a arquitetura de serviço confiável.

Para este tutorial, você criará um aplicativo de funções que serve 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. Os usuários de seus aplicativos dos Serviços de Comunicação exigem um token de acesso para participar de threads de chat e chamadas VoIP. A função funciona como um intermediário confiável entre o usuário e os Serviços de Comunicação. Você pode provisionar tokens de acesso sem expor sua cadeia de conexão de recurso aos usuários.

Para obter mais informações, confira a documentação conceitual 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 para a função. Para obter instruções passo a passo sobre como configurar, 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:

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

Depois de seguir as instruções no Início Rápido: Criar uma função C# no Azure usando o Visual Studio Code com a configuração anterior, você deverá ter um projeto no Visual Studio Code para a função com um index.js arquivo que contenha 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
    };
}

A próxima etapa é instalar bibliotecas dos Serviços de Comunicação.

Instalar bibliotecas dos Serviços de Comunicação

Use a Identity biblioteca para gerar tokens de acesso do usuário.

Use o npm install comando 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 arquivo package.json.

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

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

Gerar tokens de acesso

Para permitir que a sua função gere tokens de acesso de usuário, primeiro é necessário usar a cadeia de conexão do recurso Serviços de Comunicação.

Para obter mais informações sobre como recuperar sua cadeia de conexão, consulte Início Rápido: Criar e gerenciar recursos dos Serviços de Comunicação.

const connectionString = 'INSERT YOUR RESOURCE CONNECTION STRING'

Em seguida, modifique sua função original para gerar tokens de acesso do usuário.

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

Para este exemplo, você configura o escopo do token como voip. Outros escopos podem ser necessários para seu aplicativo. Para saber mais sobre escopos, consulte Criar e gerenciar tokens de acesso.

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 dos Serviços CommunicationUser de Comunicação existente, você pode ignorar a etapa de criação e gerar um token de acesso. Para saber mais, confira Criar e gerenciar token de acesso.

Testar a função

Execute a função localmente usando F5. Essa ação inicializa a função localmente e a torna acessível por meio de http://localhost:7071/api/FUNCTION_NAME. Para obter mais informações sobre como executar localmente, consulte Início Rápido: Criar uma função C# no Azure usando o Visual Studio Code.

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

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

Implantar a função no Azure

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

Em resumo, você precisa:

  1. Entre no Azure por meio do Visual Studio.
  2. Publicar seu projeto em sua conta do Azure. Aqui você precisa escolher uma assinatura existente.
  3. Crie um novo recurso de função usando o assistente do Visual Studio ou um recurso existente. Para um novo recurso, você precisa configurá-lo para sua região desejada, runtime e identificador exclusivo.
  4. Aguarde até que a implantação seja finalizada.
  5. Execute a função.

Executar a função

Execute a função usando a 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 obter mais informações sobre como executar sua função, consulte Início Rápido: Criar uma função C# no Azure usando o Visual Studio Code.

Proteger o ponto de extremidade

Como parte da configuração de um serviço confiável para fornecer tokens de acesso para os usuários, você precisa levar em conta a segurança desse endpoint para garantir que nenhum agente malicioso possa criar tokens de forma aleatória para seu serviço. O Azure Functions fornece recursos de segurança internos que você pode usar para proteger o ponto de extremidade usando diferentes tipos de políticas de autenticação. Para obter mais informações, consulte a segurança do Azure Functions.

Limpar os recursos

Se desejar limpar e remover uma assinatura dos Serviços de Comunicação do Azure, você poderá excluir o recurso ou 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 e limpar os recursos do Azure Functions.