Tworzenie zaufanej usługi dostępu użytkowników przy użyciu Azure Functions

W tym artykule opisano sposób używania Azure Functions do tworzenia zaufanej usługi dostępu użytkowników.

Ważne

Punkt końcowy utworzony na końcu tego samouczka nie jest bezpieczny. Pamiętaj, aby zapoznać się ze szczegółami zabezpieczeń w artykule Zabezpieczenia funkcji platformy Azure . Należy dodać zabezpieczenia do punktu końcowego, aby upewnić się, że nie można aprowizować tokenów przez nieprawidłowych aktorów.

Pobierz kod

Znajdź sfinalizowany kod dla tego przewodnika Szybki start w usłudze GitHub

Wymagania wstępne

Omówienie

Diagram dotyczący architektury zaufanej usługi

W tym samouczku utworzymy funkcję platformy Azure, która będzie służyć jako zaufana usługa aprowizacji tokenów. Korzystając z tego samouczka, możesz uruchomić własną usługę aprowizacji tokenów.

Ta usługa jest odpowiedzialna za uwierzytelnianie użytkowników w celu Azure Communication Services. Użytkownicy aplikacji usług komunikacyjnych będą wymagać Access Token udziału w wątkach rozmów i wywołaniach VoIP. Funkcja platformy Azure będzie działać jako zaufany pośrednik między użytkownikiem a usługami komunikacyjnymi. Dzięki temu można aprowizować tokeny dostępu bez ujawniania parametrów połączenia zasobów użytkownikom.

Aby uzyskać więcej informacji, zobacz dokumentację koncepcyjną dotyczącą architektury klienta iuwierzytelniania i autoryzacji .

Konfigurowanie

Azure Functions skonfigurować

Najpierw skonfigurujmy podstawową strukturę dla naszej funkcji platformy Azure. Instrukcje krok po kroku dotyczące konfigurowania można znaleźć tutaj: Tworzenie funkcji przy użyciu Visual Studio Code

Nasza funkcja platformy Azure wymaga następującej konfiguracji:

  • Język: JavaScript
  • Szablon: Wyzwalacz HTTP
  • Poziom autoryzacji: Anonimowy (można go później przełączyć, jeśli wolisz inny model autoryzacji)
  • Nazwa funkcji: zdefiniowana przez użytkownika

Po wykonaniu instrukcji Azure Functions z powyższej konfiguracji należy mieć projekt w Visual Studio Code dla funkcji platformy Azure z plikiem zawierającym index.js samą funkcję. Kod wewnątrz tego pliku powinien być następujący:


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

Teraz zainstalujemy biblioteki Azure Communication Services.

Instalowanie bibliotek usług komunikacyjnych

Użyjemy biblioteki do wygenerowania IdentityUser Access Tokens.

npm install Użyj polecenia , aby zainstalować zestaw SDK tożsamości Azure Communication Services dla języka JavaScript.


npm install @azure/communication-identity --save

Opcja --save wyświetla bibliotekę jako zależność w pliku package.json .

W górnej części pliku zaimportuj index.js interfejs dla elementu CommunicationIdentityClient

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

Generowanie tokenu dostępu

Aby umożliwić generowanie User Access Tokensfunkcji platformy Azure, najpierw będziemy potrzebować parametrów połączenia dla naszego zasobu usług komunikacyjnych.

Odwiedź przewodnik Szybki start dotyczący aprowizacji zasobów , aby uzyskać więcej informacji na temat pobierania parametrów połączenia.

const connectionString = 'INSERT YOUR RESOURCE CONNECTION STRING'

Następnie zmodyfikujemy naszą oryginalną funkcję w celu wygenerowania User Access Tokenselementu .

User Access Tokens są generowane przez utworzenie użytkownika na podstawie createUser metody . Po utworzeniu użytkownika możemy użyć getToken metody w celu wygenerowania tokenu dla tego użytkownika, który zwraca funkcja platformy Azure.

W tym przykładzie skonfigurujemy zakres tokenu na voipwartość . Inne zakresy mogą być konieczne dla aplikacji. Dowiedz się więcej o zakresach

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

W przypadku istniejących usług CommunicationUserKomunikacyjnych można pominąć krok tworzenia i po prostu wygenerować token dostępu. Więcej szczegółów znajduje się w przewodniku Szybki start Tworzenie tokenów dostępu użytkowników.

Testowanie funkcji platformy Azure

Uruchom funkcję platformy Azure lokalnie przy użyciu polecenia F5. Spowoduje to zainicjowanie funkcji platformy Azure lokalnie i udostępnienie jej za pośrednictwem: http://localhost:7071/api/FUNCTION_NAME. Zapoznaj się z dodatkową dokumentacją dotyczącą uruchamiania lokalnego

Otwórz adres URL w przeglądarce i powinna zostać wyświetlona treść odpowiedzi z identyfikatorem użytkownika komunikacji, tokenem i wygaśnięciem tokenu.

Zrzut ekranu przedstawiający przykład odpowiedzi dla utworzonej funkcji platformy Azure.

Wdrażanie funkcji na platformie Azure

Aby wdrożyć funkcję platformy Azure, możesz wykonać instrukcje krok po kroku

Podsumowując, należy wykonać następujące kroki:

  1. Logowanie się do platformy Azure z poziomu programu Visual Studio
  2. Opublikuj projekt na koncie platformy Azure. W tym miejscu musisz wybrać istniejącą subskrypcję.
  3. Utwórz nowy zasób funkcji platformy Azure przy użyciu kreatora programu Visual Studio lub użyj istniejącego zasobu. W przypadku nowego zasobu należy skonfigurować go do żądanego regionu, środowiska uruchomieniowego i unikatowego identyfikatora.
  4. Poczekaj na sfinalizowanie wdrożenia
  5. Uruchamianie funkcji 🎉

Uruchamianie funkcji platformy Azure

Uruchamianie funkcji platformy Azure przy użyciu adresu URL http://<function-appn-ame>.azurewebsites.net/api/<function-name>

Adres URL można znaleźć, klikając prawym przyciskiem myszy funkcję na Visual Studio Code i kopiując adres URL funkcji.

Aby uzyskać więcej informacji na temat uruchamiania funkcji platformy Azure

Zabezpieczanie funkcji platformy Azure

W ramach konfigurowania zaufanej usługi w celu aprowizowania tokenów dostępu dla użytkowników musimy wziąć pod uwagę bezpieczeństwo tego punktu końcowego, aby upewnić się, że żaden zły aktor nie może losowo tworzyć tokenów dla usługi. Azure Functions zapewnić wbudowane funkcje zabezpieczeń, których można użyć do zabezpieczenia punktu końcowego przy użyciu różnych typów zasad uwierzytelniania. Dowiedz się więcej o zabezpieczeniach funkcji platformy Azure

Czyszczenie zasobów

Jeśli chcesz wyczyścić i usunąć subskrypcję usług komunikacyjnych, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów. Dowiedz się więcej na temat czyszczenia zasobów usługi Azure Communication Service i czyszczenia zasobów funkcji platformy Azure.

Następne kroki

Możesz również chcieć: