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
- Uma conta do Azure com uma assinatura ativa. Para obter detalhes, confira Criar uma conta gratuitamente.
- Visual Studio Code em uma das plataformas compatíveis.
-
Node.js, versões Active LTS e versões LTS de manutenção (10.14.1 recomendada). Use o comando
node --version
para verificar sua versão. - A Extensão Azure Functions para Visual Studio Code.
- Um recurso e uma cadeia de conexão ativos dos Serviços de Comunicação. Crie um recurso dos Serviços de Comunicação.
Visão geral
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.
Implantar a Função no Azure
Para implantar sua Função do Azure, siga as instruções passo a passo
Em resumo, você precisará:
- Entrar no Azure por meio do Visual Studio
- Publicar seu projeto em sua conta do Azure. Aqui, você precisará escolher uma assinatura existente.
- 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.
- Aguarde o fim da implantação
- 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: