Partager via


Intégrer Azure Function

Présentation

Ce tutoriel fournit des instructions détaillées sur la configuration d’une fonction Azure pour recevoir des informations relatives à l’utilisateur. La configuration d’une fonction Azure est vivement recommandée. Il permet d’éviter les paramètres d’application codés en dur dans l’application Contoso (par exemple, 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 serveur principal. Le codage en dur de l’ID utilisateur et de la combinaison de jetons nécessite la modification de la valeur après chaque actualisation.

Prerequisites

Avant de commencer, veillez à :

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

Configuration des fonctions

  1. Installez l’extension Fonction Azure dans Visual Studio Code. Vous pouvez l’installer à partir du navigateur du plug-in visual Studio Code ou en suivant ce lien
  2. Configurez une application de fonction Azure 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 des 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 De fonction Azure local pour installer le Kit de développement logiciel (SDK) Azure Communication Services Identity pour JavaScript.
    npm install @azure/communication-identity --save
  1. Modifiez le index.js fichier afin qu’il ressemble 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 Azure. Le ACSEndpoint est l'URL de la ressource Azure Communication Services créée.

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

Ouvrez le lien dans un navigateur. Le résultat est similaire à cet exemple :

    {
      "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. Vous trouverez plus d’informations dans cette documentation.

  2. Testez la fonction Azure déployée. Tout d’abord, recherchez votre fonction Azure dans le portail Azure. Ensuite, utilisez le bouton « Obtenir l’URL de la fonction » pour obtenir le point de terminaison de fonction Azure. Le résultat que vous voyez doit être similaire à ce qui a été montré à l’étape 5. Le point de terminaison Azure Function sera utilisé dans l'application pour l'initialisation des paramètres de l'application.

  3. Implémentez 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 retourné. Reportez-vous à l’exemple d’application pour l’utilisation.

Guide de résolution des problèmes

  1. Si l’extension De fonction Azure n’a pas pu déployer la fonction locale dans le cloud Azure, il est probable qu’elle soit due à la version de Visual Studio Code et à l’extension De fonction Azure utilisée avec un bogue. Cette combinaison de versions a été testée pour fonctionner : version 1.68.1 de Visual Studio Code et version 1.2.1de l’extension De fonction Azure .
  2. L’emplacement d’initialisation des constantes d’application est difficile mais 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 de fonction Azure

À des fins de démonstration, cet exemple utilise un point de terminaison accessible publiquement par défaut pour extraire un jeton Azure Communication Services. Pour les scénarios de production, une option consiste à 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 le compte Microsoft pour accéder à l’application. Cette configuration augmente le niveau de sécurité pendant que les utilisateurs sont tenus de se connecter. Déterminez s’il faut l’activer en fonction des cas d’usage.

Notez que nous ne prenons actuellement pas en charge Microsoft Entra ID 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 (à l’aide des paramètres de la plateforme Android).

Configurez votre application App Service ou Azure Functions pour utiliser la connexion d’ID Microsoft Entra.