Partager via


Intégrer Azure Function

Introduction

Ce tutoriel fournit des instructions détaillées permettant de configurer une fonction Azure Function pour recevoir des informations relatives à l’utilisateur. La configuration d’une fonction Azure Function est fortement recommandée. Cela permet d’éviter le codage en dur des paramètres d’application dans l’application Contoso (comme l’ID utilisateur et le jeton utilisateur). Ces informations sont hautement confidentielles. Plus important encore, nous actualisons régulièrement les jetons utilisateur sur le back-end. Le codage en dur de la combinaison de l’ID utilisateur et du jeton nécessite de modifier la valeur après chaque actualisation.

Prérequis

Avant de commencer, assurez-vous de :

  • Créer un compte Azure avec un abonnement actif. Pour plus d’informations, consultez Créer un compte gratuitement
  • Installer Visual Studio Code.

Configuration des fonctions

  1. Installez l’extension Azure Function dans Visual Studio Code. Vous pouvez l’installer à partir du navigateur de plug-in de Visual Studio Code ou en suivant ce lien
  2. Configurez une application Azure Function locale en suivant ce lien. Nous devons créer une fonction locale à l’aide du modèle de déclencheur HTTP dans JavaScript.
  3. Installez les bibliothèques Azure Communication Services. Nous allons utiliser la bibliothèque d’identités pour générer des jetons d’accès utilisateur. Exécutez la commande npm install dans votre répertoire d’application Azure Function local pour installer le kit SDK Azure Communication Services Identity pour JavaScript.
    npm install @azure/communication-identity --save
  1. Modifiez le fichier index.js conformément au code ci-dessous :
    const { CommunicationIdentityClient } = require('@azure/communication-identity');
    const connectionString = '<your_connection_string>'
    const acsEndpoint = "<your_ACS_endpoint>"
    
    module.exports = async function (context, req) {
        let tokenClient = new CommunicationIdentityClient(connectionString);
    
        const userIDHolder = await tokenClient.createUser();
        const userId = userIDHolder.communicationUserId
    
        const userToken = await (await tokenClient.getToken(userIDHolder, ["chat"])).token;
    
        context.res = {
            body: {
                acsEndpoint,
                userId,
                userToken
            }
        };
    }

Explication du code ci-dessus : la première ligne importe l’interface pour le CommunicationIdentityClient. La chaîne de connexion de la deuxième ligne se trouve dans votre ressource Azure Communication Services dans le Portail Microsoft Azure. ACSEndpoint est l’URL de la ressource Azure Communication Services créée.

  1. Ouvrez le dossier Azure Function local dans Visual Studio Code. Ouvrez index.js et exécutez la fonction Azure Function locale. Un point de terminaison Azure Function local est créé et imprimé dans le terminal. Voici à quoi ressemble le message imprimé :
Functions:
HttpTrigger1: [GET,POST] http://localhost:7071/api/HttpTrigger1

Ouvrez le lien dans un navigateur. Le résultat ressemble à l’exemple suivant :

    {
      "acsEndpoint": "<Azure Function endpoint>",
      "userId": "8:acs:a636364c-c565-435d-9818-95247f8a1471_00000014-f43f-b90f-9f3b-8e3a0d00c5d9",
      "userToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOmE2MzYzNjRjLWM1NjUtNDM1ZC05ODE4LTk1MjQ3ZjhhMTQ3MV8wMDAwMDAxNC1mNDNmLWI5MGYtOWYzYi04ZTNhMGQwMGM1ZDkiLCJzY3AiOjE3OTIsImNzaSI6IjE2Njc4NjI3NjIiLCJleHAiOjE2Njc5NDkxNjIsImFjc1Njb3BlIjoiY2hhdCIsInJlc291cmNlSWQiOiJhNjM2MzY0Yy1jNTY1LTQzNWQtOTgxOC05NTI0N2Y4YTE0NzEiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY3ODYyNzYyfQ.t-WpaUUmLJaD0V2vgn3M5EKdJUQ_JnR2jnBUZq3J0zMADTnFss6TNHMIQ-Zvsumwy14T1rpw-1FMjR-zz2icxo_mcTEM6hG77gHzEgMR4ClGuE1uRN7O4-326ql5MDixczFeIvIG8s9kAeJQl8N9YjulvRkGS_JZaqMs2T8Mu7qzdIOiXxxlmcl0HeplxLaW59ICF_M4VPgUYFb4PWMRqLXWjKyQ_WhiaDC3FvhpE_Bdb5U1eQXDw793V1_CRyx9jMuOB8Ao7DzqLBQEhgNN3A9jfEvIE3gdwafpBWlQEdw-Uuf2p1_xzvr0Akf3ziWUsVXb9pxNlQQCc19ztl3MIQ"
    }
  1. Déployez la fonction locale dans le cloud. Pour plus d’informations, consultez cette documentation.

  2. Testez la fonction Azure Function déployée. Tout d’abord, recherchez votre fonction Azure Function dans le portail Azure. Utilisez ensuite le bouton « Obtenir l’URL de la fonction » pour obtenir le point de terminaison Azure Function. Le résultat affiché doit ressembler à l’exemple montré à l’étape 5. Le point de terminaison Azure Function est utilisé dans l’application pour initialiser les paramètres de l’application.

  3. Implement UserTokenClient, qui est utilisé pour appeler la ressource Azure Function cible et obtenir le point de terminaison Azure Communication Services, l'ID utilisateur et le jeton utilisateur à partir de l'objet JSON renvoyé. Reportez-vous à l’exemple d’application pour l’utilisation.

Guide de résolution des problèmes

  1. Si l’extension Azure Function n’a pas pu déployer la fonction locale dans le cloud Azure, cela est probablement dû à un bogue de la version utilisée de Visual Studio Code et de l’extension Azure Function. Cette combinaison de versions a été testée et fonctionne : version 1.68.1 de Visual Studio Code et version 1.2.1 de l’extension Azure Function.
  2. L’emplacement d’initialisation des constantes d’application peut se révéler délicat, mais il est important. Consultez le démarrage rapide pour le chat Android. Consultez plus précisément la note mise en évidence dans la section « Configurer les constantes d’application » et comparez les valeurs par rapport à l’exemple d’application de la version utilisée.

(Facultatif) sécuriser le point de terminaison Azure Function

À des fins de démonstration, cet exemple utilise par défaut un point de terminaison accessible publiquement pour extraire un jeton Azure Communication Services. Dans les scénarios de production, vous pouvez utiliser votre propre point de terminaison sécurisé pour provisionner vos propres jetons.

Avec une configuration supplémentaire, cet exemple prend en charge la connexion à un point de terminaison Microsoft Entra protégé. Ce dernier requiert qu’un journal de l’utilisateur pour que l’application puisse récupérer un jeton Azure Communication Services. L’utilisateur doit se connecter avec un compte Microsoft pour accéder à l’application. Cette configuration augmente le niveau de sécurité, car les utilisateurs doivent se connecter. Déterminez si cette option doit être activée en fonction des cas d’usage.

Remarque : Microsoft Entra ID n’est actuellement pas pris en charge dans l’exemple de code. Suivez les liens ci-dessous pour l’activer dans votre application et Azure Function :

Inscrivez votre application sous Microsoft Entra ID (en utilisant les paramètres de plateforme Android).

Configurez votre App Service ou votre application Azure Functions pour utiliser une connexion Microsoft Entra ID.