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
- Una cuenta de Azure con una suscripción activa. Para más información, consulte Creación de una cuenta gratuita.
- Visual Studio Code en una de las plataformas admitidas.
- Node.js , las versiones Active LTS y Maintenance LTS (se recomienda la 10.14.1). Use el comando
node --version
para comprobar la versión. - La extensión de Azure Functions para Visual Studio Code.
- Un recurso activo de Communication Services y una cadena de conexión. Cree un recurso de Communication Services.
Información general
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.
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:
- Iniciar sesión en Azure desde Visual Studio.
- Publicar el proyecto en la cuenta de Azure. Aquí tendrá que elegir una suscripción existente.
- 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.
- Espere a que la implementación finalice.
- 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: