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
- Ett Azure-konto med en aktiv prenumeration. Mer information finns i Skapa ett konto kostnadsfritt.
- Visual Studio Code på någon av plattformarna som stöds.
-
Node.js, Active LTS and Maintenance LTS-versioner (10.14.1 rekommenderas).
node --version
Använd kommandot för att kontrollera din version. - Azure Functions-tillägget för Visual Studio Code.
- En aktiv Communication Services-resurs och anslutningssträng. Skapa en Communication Services-resurs.
Översikt
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 Tokens
vå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 CommunicationUser
kan 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.
Distribuera funktionen till Azure
Om du vill distribuera din Azure-funktion kan du följa stegvisa instruktioner
Sammanfattningsvis måste du:
- Logga in på Azure från Visual Studio
- Publicera projektet till ditt Azure-konto. Här måste du välja en befintlig prenumeration.
- 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.
- Vänta tills distributionen har slutförts
- 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: