Freigeben über


Erstellen eines Authentifizierungsdiensts mithilfe von Azure Functions

In diesem Artikel wird beschrieben, wie Sie Azure Functions verwenden, um einen vertrauenswürdigen Benutzerzugriffsdienst zu erstellen.

Important

Der in diesem Lernprogramm erstellte Endpunkt ist nicht sicher. Lesen Sie unbedingt die Sicherheitsdetails im Sicherheitsartikel zu Azure Functions . Sie müssen dem Endpunkt Sicherheit hinzufügen, um sicherzustellen, dass schlechte Akteure keine Token bereitstellen können.

In diesem Artikel wird Folgendes beschrieben:

  • Richten Sie eine Funktion ein.
  • Generieren Sie Zugriffstoken.
  • Testen Sie die Funktion.
  • Stellen Sie die Funktion bereit, und führen Sie sie aus.

Code herunterladen

Den fertigen Code für diese Schnellstartanleitung finden Sie auf GitHub.

Prerequisites

Overview

Diagramm, das die Architektur vertrauenswürdiger Dienste zeigt.

In diesem Lernprogramm erstellen Sie eine Funktions-App, die als vertrauenswürdiger Tokenbereitstellungsdienst dient. Sie können dieses Tutorial zum Starten Ihres Tokenbereitstellungsservices nutzen.

Dieser Dienst ist für die Authentifizierung von Benutzern bei Kommunikationsdiensten verantwortlich. Benutzer Ihrer Kommunikationsdienste-Anwendungen erfordern ein Zugriffstoken für die Teilnahme an Chatthreads und VoIP-Anrufen. Die Funktion funktioniert als vertrauenswürdiger Zwischenmann zwischen dem Benutzer und den Kommunikationsdiensten. Sie können Zugriffstoken bereitstellen, ohne Ihre Ressourcenverbindungszeichenfolge für Ihre Benutzer verfügbar zu machen.

Weitere Informationen finden Sie in der Dokumentation zur Client-/Server-Architektur und zur Authentifizierung und Autorisierung.

Einrichten einer Funktion

In diesem Abschnitt werden die Verfahren zum Einrichten einer Funktion beschrieben.

Einrichten von Azure-Funktionen

Zunächst richten wir die grundlegende Struktur für die Funktion ein. Schrittweise Anleitungen zum Einrichten finden Sie in der Schnellstartanleitung: Erstellen einer C#-Funktion in Azure mithilfe von Visual Studio Code.

Für die Funktion ist die folgende Konfiguration erforderlich:

  • Sprache: JavaScript
  • Vorlage: HTTP-Trigger
  • Autorisierungsstufe: Anonym (wenn Sie ein anderes Autorisierungsmodell bevorzugen, können Sie es später wechseln)
  • Funktionsname: Benutzerdefiniert

Nachdem Sie die Anweisungen in der Schnellstartanleitung befolgt haben: Erstellen sie eine C#-Funktion in Azure mithilfe von Visual Studio Code mit der vorherigen Konfiguration, sollten Sie über ein Projekt in Visual Studio Code für die Funktion mit einer index.js Datei verfügen, die die Funktion selbst enthält. Der folgende Code in der Datei sollte sein:


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

Der nächste Schritt besteht darin, Kommunikationsdienste-Bibliotheken zu installieren.

Installieren von Communication Services-Bibliotheken

Sie verwenden die Identity Bibliothek, um Benutzerzugriffstoken zu generieren.

Verwenden Sie den npm install Befehl, um das Communication Services Identity SDK für JavaScript zu installieren.


npm install @azure/communication-identity --save

Mit der Option --save wird die Bibliothek als Abhängigkeit in Ihrer Datei package.json aufgelistet.

Importieren Sie oben in der index.js Datei die Schnittstelle für den CommunicationIdentityClient Parameter.

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

Generieren von Zugriffstoken

Damit Ihre Funktion Benutzerzugriffstoken generieren kann, müssen Sie zuerst die Verbindungszeichenfolge für Ihre Communication Services-Ressource verwenden.

Weitere Informationen zum Abrufen der Verbindungszeichenfolge finden Sie in der Schnellstartanleitung: Erstellen und Verwalten von Kommunikationsdiensten-Ressourcen.

const connectionString = 'INSERT YOUR RESOURCE CONNECTION STRING'

Als Nächstes ändern Sie Ihre ursprüngliche Funktion, um Benutzerzugriffstoken zu generieren.

Verwenden Sie zum Generieren von Benutzerzugriffstoken die createUser Methode, um einen Benutzer zu erstellen. Nachdem der Benutzer erstellt wurde, verwenden Sie die getToken Methode, um ein Token für diesen Benutzer zu generieren, das von der Funktion zurückgegeben wird.

In diesem Beispiel konfigurieren Sie den Tokenbereich auf voip. Für Ihre Anwendung sind möglicherweise andere Bereiche erforderlich. Weitere Informationen zu Bereichen finden Sie unter Erstellen und Verwalten von Zugriffstoken.

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 den vorhandenen Communication Services-Parameter CommunicationUser können Sie den Erstellungsschritt überspringen und ein Zugriffstoken generieren. Weitere Informationen finden Sie unter Erstellen und Verwalten von Zugriffstoken.

Testen der Funktion

Führen Sie die Funktion lokal mithilfe von F5 aus. Diese Aktion initialisiert die Funktion lokal und macht sie barrierefrei über http://localhost:7071/api/FUNCTION_NAME. Weitere Informationen zum lokalen Ausführen finden Sie unter Schnellstart: Erstellen einer C#-Funktion in Azure mithilfe von Visual Studio Code.

Öffnen Sie die URL in Ihrem Browser. Daraufhin wird ein Antworttext mit der Kommunikationsbenutzer-ID, dem Token und dessen Ablaufdatum angezeigt.

Screenshot eines Antwortbeispiels für die erstellte Funktion.

Bereitstellen der Funktion in Azure

Um Ihre Funktion bereitzustellen, befolgen Sie die schrittweisen Anleitungen in der Schnellstartanleitung: Erstellen einer C#-Funktion in Azure mithilfe von Visual Studio Code.

Zusammenfassend müssen Sie Folgendes ausführen:

  1. Melden Sie sich über Visual Studio bei Azure an.
  2. Veröffentlichen Sie Ihr Projekt in Ihrem Azure-Konto. Hier müssen Sie ein vorhandenes Abonnement auswählen.
  3. Erstellen Sie eine neue Funktionsressource mithilfe des Visual Studio-Assistenten oder einer vorhandenen Ressource. Für eine neue Ressource müssen Sie sie in Ihrer gewünschten Region, Laufzeit und eindeutigen ID konfigurieren.
  4. Warten Sie, bis die Bereitstellung abgeschlossen ist.
  5. Führen Sie die Funktion aus.

Ausführen der Funktion

Führen Sie die Funktion mithilfe der URL http://<function-appn-ame>.azurewebsites.net/api/<function-name>aus.

Um die URL zu finden, klicken Sie mit der rechten Maustaste auf die Funktion in Visual Studio Code, und kopieren Sie die Funktions-URL.

Weitere Informationen zum Ausführen Ihrer Funktion finden Sie in der Schnellstartanleitung: Erstellen einer C#-Funktion in Azure mithilfe von Visual Studio Code.

Sichern des Endpunkts

Im Rahmen der Einrichtung eines vertrauenswürdigen Diensts für die Bereitstellung von Zugriffstoken für Benutzer müssen Sie die Sicherheit dieses Endpunkts berücksichtigen, um sicherzustellen, dass kein schlechter Akteur zufällig Token für Ihren Dienst erstellen kann. Azure Functions bietet integrierte Sicherheitsfeatures, die Sie zum Sichern des Endpunkts verwenden können, indem Sie verschiedene Arten von Authentifizierungsrichtlinien verwenden. Weitere Informationen finden Sie unter Azure Functions Security.

Bereinigen von Ressourcen

Wenn Sie ein Azure Communication Services-Abonnement bereinigen und entfernen möchten, können Sie die Ressource oder Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind. Weitere Informationen zum Bereinigen von Kommunikationsdienstressourcen und zum Bereinigen von Azure Functions-Ressourcen finden Sie hier.