Skapa en betrodd användaråtkomsttjänst med Azure Functions

Den här artikeln beskriver hur du använder Azure Functions för att skapa en betrodd användaråtkomsttjänst.

Viktigt

Slutpunkten som skapades i slutet av den här självstudien är inte säker. Läs mer om säkerhetsinformationen i artikeln Azure Function Security . Du måste lägga till säkerhet i slutpunkten för att säkerställa att dåliga aktörer inte kan etablera token.

Ladda ned kod

Hitta den färdiga koden för den här snabbstarten på GitHub

Förutsättningar

Översikt

Diagram över betrodd tjänstarkitektur

I den här självstudien skapar vi en Azure-funktion som fungerar som en betrodd tokenetableringstjänst. Du kan använda den här självstudien för att starta din egen tokenetableringstjänst.

Den här tjänsten ansvarar för att autentisera användare till Azure Communication Services. Användare av dina Communication Services-program kräver en Access Token för att kunna delta i chatttrådar och VoIP-samtal. Azure-funktionen fungerar som en betrodd mellanhand mellan användaren och Communication Services. På så sätt kan du etablera åtkomsttoken utan att exponera resursanslutningssträngen för dina användare.

Mer information finns i konceptuell dokumentation om klient-serverarkitekturoch autentisering och auktorisering .

Inrätta

Azure Functions konfigurera

Vi ska först konfigurera den grundläggande strukturen för vår Azure-funktion. Stegvisa instruktioner för konfigurationen finns här: Skapa en funktion med Visual Studio Code

Vår Azure-funktion kräver följande konfiguration:

  • Språk: JavaScript
  • Mall: HTTP-utlösare
  • Auktoriseringsnivå: Anonym (detta kan växlas senare om du föredrar en annan auktoriseringsmodell)
  • Funktionsnamn: Användardefinierad

När du har följt Azure Functions instruktionerna med ovanstående konfiguration bör du ha ett projekt i Visual Studio Code för Azure-funktionen med en index.js fil som innehåller själva funktionen. Koden i den här filen ska vara följande:


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

Nu ska vi fortsätta att installera Azure Communication Services bibliotek.

Installera kommunikationstjänstbibliotek

Vi använder Identity biblioteket för att generera User Access Tokens.

npm install Använd kommandot för att installera Azure Communication Services Identity SDK för JavaScript.


npm install @azure/communication-identity --save

Alternativet --save visar biblioteket som ett beroende i filen package.json .

Längst upp i index.js filen importerar du gränssnittet för CommunicationIdentityClient

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

Generering av åtkomsttoken

För att kunna generera User Access Tokensvår Azure-funktion måste vi först använda anslutningssträngen för vår Communication Services-resurs.

Mer information om hur du hämtar anslutningssträngen finns i snabbstarten för resursetablering .

const connectionString = 'INSERT YOUR RESOURCE CONNECTION STRING'

Sedan ändrar vi vår ursprungliga funktion för att generera User Access Tokens.

User Access Tokens genereras genom att skapa en användare från createUser -metoden. När användaren har skapats kan vi använda getToken metoden för att generera en token för den användare som Azure-funktionen returnerar.

I det här exemplet konfigurerar vi tokenomfånget till voip. Andra omfång kan vara nödvändiga för ditt program. Läs mer om omfång

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

För befintliga Kommunikationstjänster CommunicationUserkan du hoppa över skapandesteget och bara generera en åtkomsttoken. Mer information finns i snabbstarten Skapa användaråtkomsttoken.

Testa Azure-funktionen

Kör Azure-funktionen lokalt med .F5 Detta initierar Azure-funktionen lokalt och gör den tillgänglig via: http://localhost:7071/api/FUNCTION_NAME. Läs mer i dokumentationen om att köra lokalt

Öppna URL:en i webbläsaren så bör du se en svarstext med kommunikationsanvändar-ID, token och förfallodatum för token.

Skärmbild som visar ett svarsexempel för den skapade Azure-funktionen.

Distribuera funktionen till Azure

Om du vill distribuera din Azure-funktion kan du följa stegvisa instruktioner

Sammanfattningsvis måste du:

  1. Logga in på Azure från Visual Studio
  2. Publicera projektet till ditt Azure-konto. Här måste du välja en befintlig prenumeration.
  3. Skapa en ny Azure-funktionsresurs med hjälp av Visual Studio-guiden eller använd en befintlig resurs. För en ny resurs måste du konfigurera den till önskad region, körning och unik identifierare.
  4. Vänta tills distributionen har slutförts
  5. Kör funktionen 🎉

Kör Azure-funktion

Kör Azure-funktionen med hjälp av URL:en http://<function-appn-ame>.azurewebsites.net/api/<function-name>

Du hittar URL:en genom att högerklicka på funktionen i Visual Studio Code och kopiera funktions-URL:en.

Mer information om hur du kör din Azure-funktion

Skydda Azure-funktionen

Som en del av konfigurationen av en betrodd tjänst för att etablera åtkomsttoken för användare måste vi ta hänsyn till säkerheten för slutpunkten för att se till att ingen dålig aktör slumpmässigt kan skapa token för din tjänst. Azure Functions tillhandahålla inbyggda säkerhetsfunktioner som du kan använda för att skydda slutpunkten med hjälp av olika typer av autentiseringsprinciper. Läs mer om Azure Function Security

Rensa resurser

Om du vill rensa och ta bort en Communication Services-prenumeration kan du ta bort resursen eller resursgruppen. Om du tar bort resursgruppen tas även alla andra resurser som är associerade med den bort. Du kan läsa mer om att rensa Azure Communication Service-resurser och rensa Azure-funktionsresurser.

Nästa steg

Du kanske också vill: