Criar um serviço de acesso de utilizador fidedigno com Funções do Azure

Este artigo descreve como utilizar Funções do Azure para criar um serviço de acesso de utilizador fidedigno.

Importante

O ponto final criado no final deste tutorial não é seguro. Certifique-se de que lê sobre os detalhes de segurança no artigo Segurança de Funções do Azure . Tem de adicionar segurança ao ponto final para garantir que os atores incorretos não conseguem aprovisionar tokens.

Transferir Código

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

Pré-requisitos

Descrição Geral

Diagrama para arquitetura de serviço fidedigno

Neste tutorial, vamos criar uma Função do Azure que servirá como um serviço de aprovisionamento de tokens fidedigno. Pode utilizar este tutorial para iniciar o programa de arranque do seu próprio serviço de aprovisionamento de tokens.

Este serviço é responsável pela autenticação de utilizadores para Azure Communication Services. Os utilizadores das suas aplicações dos Serviços de Comunicação precisarão de um Access Token para participar em tópicos de chat e chamadas VoIP. A Função do Azure funcionará como um intermediário fidedigno entre o utilizador e os Serviços de Comunicação. Isto permite-lhe aprovisionar tokens de acesso sem expor a cadeia de ligação de recursos aos seus utilizadores.

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

Configurar

Funções do Azure configurar

Vamos primeiro configurar a estrutura básica para a nossa função do Azure. As instruções passo a passo sobre a configuração podem ser encontradas aqui: Criar uma função com o Visual Studio Code

A nossa Função do Azure requer a seguinte configuração:

  • Linguagem: JavaScript
  • Modelo: Acionador HTTP
  • Nível de Autorização: Anónimo (pode ser mudado mais tarde se preferir um modelo de autorização diferente)
  • Nome da Função: definido pelo utilizador

Depois de seguir as instruções de Funções do Azure com a configuração acima, deve ter um projeto no Visual Studio Code para a Função do Azure com um index.js ficheiro que contenha a própria função. O código dentro deste ficheiro 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
    };
}

Vamos agora instalar bibliotecas Azure Communication Services.

Instalar bibliotecas de serviços de comunicação

Vamos utilizar a Identity biblioteca para gerar User Access Tokens.

Utilize o npm install comando para instalar o SDK de Identidade do Azure Communication Services para JavaScript.


npm install @azure/communication-identity --save

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

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

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

Geração de tokens de acesso

Para permitir que a nossa Função do Azure gere User Access Tokens, primeiro precisamos de utilizar a cadeia de ligação para o nosso recurso dos Serviços de Comunicação.

Visite o início rápido do aprovisionamento de recursos para obter mais informações sobre como obter a cadeia de ligação.

const connectionString = 'INSERT YOUR RESOURCE CONNECTION STRING'

Em seguida, vamos modificar a nossa função original para gerar User Access Tokens.

User Access Tokens são gerados através da criação de um utilizador a createUser partir do método . Assim que o utilizador for criado, podemos utilizar o getToken método para gerar um token para esse utilizador que a Função do Azure devolve.

Neste exemplo, vamos configurar o âmbito do token para voip. Podem ser necessários outros âmbitos para a sua aplicação. Saiba mais sobre âmbitos

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 os Serviços de Comunicação existentes CommunicationUser, pode ignorar o passo de criação e apenas gerar um token de acesso. Mais detalhes encontrados no início rápido Criar tokens de acesso de utilizador.

Testar a Função do Azure

Execute a Função do Azure localmente com F5. Esta ação irá inicializar a Função do Azure localmente e torná-la acessível através de: http://localhost:7071/api/FUNCTION_NAME. Veja a documentação adicional sobre a execução local

Abra o URL no browser e deverá ver um corpo de resposta com o ID de Utilizador de Comunicação, o token e a expiração do token.

Captura de ecrã a mostrar um exemplo de Resposta para a Função do Azure criada.

Implementar a Função no Azure

Para implementar a função do Azure, pode seguir as instruções passo a passo

Em resumo, terá de:

  1. Iniciar sessão no Azure a partir do Visual Studio
  2. Publique o projeto na sua conta do Azure. Aqui, terá de escolher uma subscrição existente.
  3. Crie um novo recurso de Função do Azure com o assistente do Visual Studio ou utilize um recurso existente. Para um novo recurso, terá de configurá-lo para a região, runtime e identificador exclusivo pretendidos.
  4. Aguarde até que a implementação conclua
  5. Executar a função 🎉

Executar a Função do Azure

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

Pode encontrar o URL ao clicar com o botão direito do rato na função no Visual Studio Code e ao copiar o URL da Função.

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

Proteger a Função do Azure

Como parte da configuração de um serviço fidedigno para aprovisionar tokens de acesso para os utilizadores, temos de ter em conta a segurança desse ponto final para garantir que nenhum ator incorreto pode criar tokens aleatoriamente para o seu serviço. Funções do Azure fornecer funcionalidades de segurança incorporadas que pode utilizar para proteger o ponto final através de 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 subscrição do Communication Services, pode eliminar o recurso ou grupo de recursos. Eliminar o grupo de recursos também elimina quaisquer outros recursos associados ao mesmo. Pode saber mais sobre como limpar os recursos do Serviço de Comunicação do Azure e limpar os Recursos de Funções do Azure.

Passos seguintes

Também pode querer: