Compartir a través de


Creación de un servicio de acceso de usuarios de confianza mediante Azure Functions

En este artículo se describe cómo usar Azure Functions para crear un servicio de acceso de usuarios de confianza.

Importante

El punto de conexión que se crea al final de este tutorial no es seguro. Asegúrese de leer los detalles de seguridad en el artículo Seguridad de Azure Functions. Debe agregar seguridad al punto de conexión para asegurarse de que actores malintencionados no puedan aprovisionar tokens.

Descarga de código

Busque el código finalizado de este inicio rápido en GitHub

Requisitos previos

Información general

Diagrama de arquitectura del servicio de confianza

En este tutorial, vamos a crear una instancia de Azure Functions que servirá como servicio de aprovisionamiento de tokens de confianza. Puede usar este tutorial para arrancar su propio servicio de aprovisionamiento de tokens.

Este servicio es responsable de autenticar a los usuarios en Azure Communication Services. Los usuarios de las aplicaciones de Communication Services requerirán un Access Token para poder participar en hilos de chat y llamadas VoIP. La instancia de Azure Functions funcionará como intermediario de confianza entre el usuario y Communication Services. Esto le permite aprovisionar tokens de acceso sin exponer la cadena de conexión de recursos a los usuarios.

Para obtener más información, consulte la arquitectura cliente-servidor y la documentación conceptual de autenticación y autorización.

Instalación

Configuración de Azure Functions

Vamos a configurar primero la estructura básica de la instancia de Azure Functions. Aquí encontrará instrucciones detalladas sobre la configuración: Creación de una función mediante Visual Studio Code

La instancia de Azure Functions requiere la siguiente configuración:

  • Language: JavaScript
  • Plantilla: Desencadenador HTTP
  • Nivel de autorización: Anónimo (se puede cambiar más adelante si prefiere otro modelo de autorización)
  • Nombre de la función: Definido por el usuario

Después de seguir las instrucciones de Azure Functions con la configuración anterior, debe tener un proyecto en Visual Studio Code para la instancia de Azure Functions con un archivo index.js que contenga la propia función. El código dentro de este archivo debe ser el siguiente:


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

Ahora vamos a instalar las bibliotecas de Azure Communication Services.

Instalación de las bibliotecas de Communication Services

Usaremos la biblioteca Identity para generar User Access Tokens.

Use el comando npm install para instalar Identity SDK de Azure Communication Services para JavaScript.


npm install @azure/communication-identity --save

La opción --save muestra la biblioteca como dependencia en el archivo package.json.

En la parte superior del archivo index.js, importe la interfaz para CommunicationIdentityClient.

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

Generación del token de acceso

Para permitir que la instancia de Azure Functions genere User Access Tokens, primero necesitaremos usar la cadena de conexión para el recurso de Communication Services.

Para obtener más información sobre cómo recuperar la cadena de conexión, visite la guía de inicio rápido de aprovisionamiento de recursos.

const connectionString = 'INSERT YOUR RESOURCE CONNECTION STRING'

A continuación, modificaremos la función original para generar User Access Tokens.

User Access Tokens se generan al crear un usuario a partir del método createUser. Una vez creado el usuario, se puede usar el método getToken para generar un token para ese usuario que devuelve la instancia de Azure Functions.

En este ejemplo, configuraremos el ámbito del token para voip. Puede que se necesiten otros ámbitos para su aplicación. Obtenga más información sobre los á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
    };
}

En el caso del CommunicationUser existente de Communication Services, puede omitir el paso de creación y simplemente generar un token de acceso. Puede encontrar más detalles en la guía de inicio rápido de creación de tokens de acceso de usuario.

Prueba de la instancia de Azure Functions

Ejecute la instancia de Azure Functions localmente con F5. Esto inicializará la instancia de Azure Functions localmente y hará que sea accesible a través de http://localhost:7071/api/FUNCTION_NAME. Consulte la documentación adicional sobre la ejecución local.

Abra la dirección URL en el explorador; verá un cuerpo de respuesta con el identificador de usuario de la comunicación, el token y la expiración del token.

Captura de pantalla que muestra un ejemplo de respuesta para la instancia de Azure Functions creada.

Implementación de la función en Azure

Para implementar la instancia de Azure Functions, puede seguir las instrucciones paso a paso.

En resumen, tendrá que:

  1. Iniciar sesión en Azure desde Visual Studio.
  2. Publicar el proyecto en la cuenta de Azure. Aquí tendrá que elegir una suscripción existente.
  3. Crear un nuevo recurso de Azure Functions con el Asistente de Visual Studio o usar un recurso existente. En el caso de un nuevo recurso, deberá configurarlo para la región, el tiempo de ejecución y el identificador único que desee.
  4. Espere a que la implementación finalice.
  5. Ejecución de la función 🎉

Ejecución de la instancia de Azure Functions

Ejecute la instancia de Azure Functions con la URL http://<function-appn-ame>.azurewebsites.net/api/<function-name>.

Para encontrar la dirección URL, puede hacer clic con el botón derecho en la función en Visual Studio Code y copiar la dirección URL de la función.

Más información sobre la ejecución la instancia de Azure Functions

Protección de Azure Functions

Como parte de la configuración de un servicio de confianza para aprovisionar tokens de acceso para los usuarios, es necesario tener en cuenta la seguridad de ese punto de conexión para asegurarse de que ningún actor malintencionado pueda crear tokens aleatoriamente para el servicio. Azure Functions proporciona características de seguridad integradas que puede usar para proteger el punto de conexión mediante diferentes tipos de directivas de autenticación. Obtenga más información en Seguridad de Azure Functions

Limpieza de recursos

Si quiere limpiar y quitar una suscripción a Communication Services, puede eliminar el recurso o grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él. Puede obtener más información sobre la limpieza de los recursos de Azure Communication Services y la limpieza de los recursos de Azure Functions.

Pasos siguientes

Puede que también le interese: