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
- Konto platformy Azure z aktywną subskrypcją. Aby uzyskać szczegółowe informacje, zobacz Tworzenie konta bezpłatnie.
- Program Visual Studio Code na jednej z obsługiwanych platform.
-
Node.js, wersje Active LTS i Maintenance LTS (zalecane wersje 10.14.1). Użyj polecenia ,
node --version
aby sprawdzić wersję. - Rozszerzenie obsługujące usługę Azure Functions dla programu Visual Studio Code.
- Aktywny zasób usług komunikacyjnych i parametry połączenia. Utwórz zasób usług komunikacyjnych.
Omówienie
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 Identity
User 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 Tokens
funkcji 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 Tokens
elementu .
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 voip
wartość . 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 CommunicationUser
Komunikacyjnych 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.
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:
- Logowanie się do platformy Azure z poziomu programu Visual Studio
- Opublikuj projekt na koncie platformy Azure. W tym miejscu musisz wybrać istniejącą subskrypcję.
- 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.
- Poczekaj na sfinalizowanie wdrożenia
- 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ć: