Udostępnij za pośrednictwem


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

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

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 złych aktorów.

Pobierz kod

Znajdź sfinalizowany kod dla tego przewodnika Szybki start w witrynie GitHub

Wymagania wstępne

Omówienie

Diagram dotyczący architektury zaufanej usługi

Na potrzeby tego samouczka 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 usługach Azure Communication Services. Użytkownicy aplikacji usług komunikacyjnych będą musieli Access Token uczestniczyć w wątkach czatu 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 uwidaczniania zasobów parametry połączenia użytkownikom.

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

Konfigurowanie

Konfigurowanie usługi Azure Functions

Najpierw skonfigurujmy podstawową strukturę dla naszej funkcji platformy Azure. Instrukcje krok po kroku dotyczące konfiguracji można znaleźć tutaj: Tworzenie funkcji przy użyciu programu 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 usługi Azure Functions z powyższą konfiguracją należy mieć projekt w programie Visual Studio Code dla funkcji platformy Azure z plikiem zawierającym index.js samą funkcję. Kod w tym 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 usług Azure Communication Services.

Instalowanie bibliotek usług komunikacyjnych

Użyjemy Identity biblioteki do wygenerowania User Access Tokens.

Użyj polecenia , npm install aby zainstalować zestaw SDK tożsamości usług 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 index.js części pliku zaimportuj 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ć parametry 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 parametry 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 createUser podstawie 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 voip. Inne zakresy mogą być niezbędne 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 wygenerować token dostępu. Więcej szczegółów można znaleźć 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 zakończenie 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ę w programie 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 nieprawidłowych aktorów nie może losowo tworzyć tokenów dla usługi. Usługa Azure Functions udostępnia wbudowane funkcje zabezpieczeń, których można użyć do zabezpieczenia punktu końcowego przy użyciu różnych typów zasad uwierzytelniania. Przeczytaj więcej na temat zabezpieczeń 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. Możesz dowiedzieć 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ż wykonać następujące czynności: