Een vertrouwde service voor gebruikerstoegang bouwen met behulp van Azure Functions

In dit artikel wordt beschreven hoe u Azure Functions gebruikt om een vertrouwde service voor gebruikerstoegang te bouwen.

Belangrijk

Het eindpunt dat aan het einde van deze zelfstudie is gemaakt, is niet beveiligd. Lees meer over de beveiligingsdetails in het artikel Azure Function Security . U moet beveiliging toevoegen aan het eindpunt om ervoor te zorgen dat slechte actoren geen tokens kunnen inrichten.

Code downloaden

Zoek de voltooide code voor deze quickstart op GitHub

Vereisten

Overzicht

Diagram voor architectuur van een vertrouwde service

Voor deze zelfstudie gaan we een Azure-functie maken die als een service voor het inrichten van een vertrouwde token zal fungeren. U kunt deze zelfstudie gebruiken om uw eigen service voor het inrichten van een token te bootstrappen.

Met deze service worden gebruikers bij Azure Communication Services geverifieerd. Voor gebruikers van uw Communication Services-toepassingen is een Access Token vereist om deel te kunnen nemen aan chatthreads en VoIP-oproepen. De Azure-functie werkt als een vertrouwde schakel tussen de gebruiker en Communication Services. Zo kunt u toegangstokens inrichten zonder dat uw gebruikers de verbindingsreeks van uw resource krijgen te zien.

Zie de documentatie over de concepten client-serverarchitectuur en verificatie en autorisatie voor meer informatie.

Instellen

Azure Functions instellen

Eerst gaat u de basisstructuur voor uw Azure-functie instellen. Stapsgewijze instructies voor deze instellingen vindt u hier: Een functie maken met behulp van Visual Studio Code

Voor de Azure-functie is de volgende configuratie vereist:

  • Taal: Javascript
  • Sjabloon: HTTP-trigger
  • Autorisatieniveau: Anoniem (dit kan later worden gewijzigd als u de voorkeur geeft aan een ander autorisatiemodel)
  • Functienaam: Door de gebruiker gedefinieerd

Na het volgen van de instructies voor Azure Functions met de bovenstaande configuratie, moet u een project in Visual Studio Code voor de Azure-functie hebben dat een bestand index.js heeft dat de functie zelf bevat. De code in dit bestand moet er als volgt uitzien:


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

We gaan nu verder met het installeren van Azure Communication Services-bibliotheken.

Communicatie Services-bibliotheken installeren

We gaan bibliotheek gebruiken Identity om User Access Tokens te genereren.

Gebruik de npm install opdracht om de Azure Communication Services Identity SDK voor JavaScript te installeren.


npm install @azure/communication-identity --save

Met de optie --save wordt de bibliotheek als een afhankelijkheid in bestand package.json vermeld.

Importeer de interface voor de CommunicationIdentityClient boven in het bestand index.js.

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

Toegangstoken genereren

Als u wilt dat uw Azure-functie User Access Tokens kan genereren, moet u eerst de verbindingsreeks voor de Communication Services-resource gebruiken.

Ga naar de quickstart over het inrichten van resources voor meer informatie over het ophalen van uw verbindingsreeks.

const connectionString = 'INSERT YOUR RESOURCE CONNECTION STRING'

U gaat nu uw oorspronkelijke functie aanpassen om User Access Tokens te genereren.

User Access Tokens worden gegenereerd door een gebruiker te maken met behulp van de methode createUser. Zodra de gebruiker is gemaakt, kan de methode getToken worden gebruikt om een token te genereren voor de gebruiker die door de Azure-functie wordt geretourneerd.

Voor dit voorbeeld wordt het tokenbereik geconfigureerd voor voip. Er kunnen andere bereiken nodig zijn voor uw toepassing. Meer informatie over bereiken

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

Voor bestaande CommunicationUser van Communication Services kunt u de stap voor het maken van een gebruiker overslaan en alleen een toegangstoken genereren. Meer informatie vindt u in de quickstart voor het maken van tokens voor gebruikerstoegang.

De Azure-functie testen

Test de Azure-functie lokaal met behulp van F5. Hiermee initialiseert u de Azure-functie lokaal en maakt u deze toegankelijk via: http://localhost:7071/api/FUNCTION_NAME. Bekijk aanvullende documentatie over lokaal uitvoeren

Open de URL in uw browser en controleer of er een antwoordtekst wordt weergeven met de gebruikers-id voor Communication, het token en de vervaltijd van het token.

Schermopname met een voorbeeldantwoord voor de gemaakte Azure-functie.

De functie implementeren in Azure

Als u uw Azure-functie wilt implementeren, kunt u daarvoor stapsgewijze instructies volgen

Kortom, u moet het volgende doen:

  1. Meld u vanuit Visual Studio aan bij Azure
  2. Publiceer uw project naar uw Azure-account. Hier moet u een bestaand abonnement kiezen.
  3. Maak een nieuwe Azure-functieresource met behulp van de Visual Studio-wizard of gebruik een bestaande resource. Als het een nieuwe resource betreft, moet u deze configureren voor de gewenste regio, runtime en uw unieke id.
  4. Wacht tot de implementatie is voltooid.
  5. Voer de functie 🎉 uit.

Azure-functie uitvoeren

Voer de Azure-functie uit via de URL http://<function-appn-ame>.azurewebsites.net/api/<function-name>.

U kunt de URL vinden door in Visual Studio Code met de rechtermuisknop op de functie te klikken en de functie-URL te kopiëren.

Meer informatie over het uitvoeren van uw Azure-functie

Azure-functie beveiligen

Als onderdeel van het instellen van een vertrouwde service voor het inrichten van toegangstokens voor gebruikers, moeten we rekening houden met de beveiliging van dat eindpunt om ervoor te zorgen dat geen slechte actor willekeurig tokens voor uw service kan maken. Azure Functions ingebouwde beveiligingsfuncties bieden die u kunt gebruiken om het eindpunt te beveiligen met behulp van verschillende typen verificatiebeleid. Meer informatie over Azure Function Security

Resources opschonen

Als u een Communication Services-abonnement wilt opschonen en verwijderen, kunt u de resource of resourcegroep verwijderen. Als u de resourcegroep verwijdert, worden ook alle bijbehorende resources verwijderd. U kunt meer vinden over het opruimen van Azure Communication Services-resources en opruimen van Azure Function-resources.

Volgende stappen

U wilt mogelijk ook: