Vytvoření důvěryhodné služby přístupu uživatelů pomocí Azure Functions

Tento článek popisuje, jak pomocí Azure Functions vytvořit důvěryhodnou službu přístupu uživatelů.

Důležité

Koncový bod vytvořený na konci tohoto kurzu není zabezpečený. Nezapomeňte si přečíst podrobnosti o zabezpečení v článku Zabezpečení funkce Azure Functions . Do koncového bodu musíte přidat zabezpečení, aby se zajistilo, že aktéři se špatnými chybami nebudou moct zřizovat tokeny.

Stáhnout kód

Vyhledání dokončeného kódu pro tento rychlý start na GitHubu

Požadavky

Přehled

Diagram pro architekturu důvěryhodných služeb

Pro účely tohoto kurzu vytvoříme funkci Azure Functions, která bude sloužit jako služba zřizování důvěryhodných tokenů. Tento kurz můžete použít ke spuštění vlastní služby zřizování tokenů.

Tato služba zodpovídá za ověřování uživatelů pro Azure Communication Services. Uživatelé vašich aplikací komunikačních služeb budou pro účast ve vláknech chatu a voláních VoIP vyžadovat Access Token . Funkce Azure Functions bude fungovat jako důvěryhodný prostředník mezi uživatelem a komunikačními službami. To vám umožní zřizovat přístupové tokeny, aniž byste uživatelům museli vystavit připojovací řetězec prostředku.

Další informace najdete v koncepční dokumentaci k architektuře klient-servera ověřování a autorizaci .

Nastavení

Azure Functions nastavení

Nejprve nastavíme základní strukturu pro naši funkci Azure. Podrobné pokyny k nastavení najdete tady: Vytvoření funkce pomocí editoru Visual Studio Code.

Naše funkce Azure Functions vyžaduje následující konfiguraci:

  • Jazyk: JavaScript
  • Šablona: Trigger HTTP
  • Úroveň autorizace: Anonymní (můžete ji později přepnout, pokud dáváte přednost jinému modelu autorizace)
  • Název funkce: Definované uživatelem

Po provedení Azure Functions pokynů s výše uvedenou konfigurací byste měli mít v nástroji Visual Studio Code projekt pro funkci Azure Functions se souboremindex.js, který obsahuje samotnou funkci. Kód uvnitř tohoto souboru by měl vypadat takto:


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

Teď budeme pokračovat instalací knihoven Azure Communication Services.

Instalace knihoven komunikačních služeb

K vygenerování User Access Tokenspoužijeme knihovnu Identity .

Pomocí příkazu npm install nainstalujte sadu SDK Azure Communication Services Identity pro JavaScript.


npm install @azure/communication-identity --save

Možnost --save zobrazí seznam knihovny jako závislosti v souboru package.json .

V horní části index.js souboru naimportujte rozhraní pro CommunicationIdentityClient

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

Generování přístupových tokenů

Abychom funkci Azure Functions umožnili vygenerovat User Access Tokens, musíme nejprve použít připojovací řetězec pro prostředek komunikačních služeb.

Další informace o načtení připojovacího řetězce najdete v rychlém startu pro zřizování prostředků .

const connectionString = 'INSERT YOUR RESOURCE CONNECTION STRING'

Dále upravíme původní funkci tak, aby vygenerovala User Access Tokens.

User Access Tokens se vygenerují vytvořením uživatele z createUser metody . Po vytvoření uživatele můžeme použít metodu getToken k vygenerování tokenu pro uživatele, který funkce Azure Functions vrátí.

V tomto příkladu nakonfigurujeme obor tokenu na voip. Pro vaši aplikaci můžou být nezbytné jiné obory. Další informace o oborech

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

U existujících komunikačních služeb CommunicationUsermůžete přeskočit krok vytvoření a vygenerovat přístupový token. Další podrobnosti najdete v rychlém startu Vytvoření přístupových tokenů uživatelů.

Testování funkce Azure Functions

Spusťte funkci Azure Functions místně pomocí F5příkazu . Tím se funkce Azure Functions inicializuje místně a zpřístupní se prostřednictvím: http://localhost:7071/api/FUNCTION_NAME. Projděte si další dokumentaci k místnímu spuštění.

Otevřete adresu URL v prohlížeči a měli byste vidět text odpovědi s ID uživatele komunikace, tokenem a vypršením platnosti tokenu.

Snímek obrazovky znázorňující příklad odpovědi pro vytvořenou funkci Azure

Nasazení funkce do Azure

Pokud chcete nasadit funkci Azure Functions, můžete postupovat podle podrobných pokynů.

Stručně řečeno, budete muset:

  1. Přihlášení k Azure ze sady Visual Studio
  2. Publikujte projekt na svůj účet Azure. Tady budete muset zvolit existující předplatné.
  3. Pomocí průvodce sadou Visual Studio vytvořte nový prostředek funkce Azure Functions nebo použijte existující prostředek. U nového prostředku budete muset nakonfigurovat požadovanou oblast, modul runtime a jedinečný identifikátor.
  4. Počkejte na dokončení nasazení.
  5. Spuštění funkce 🎉

Spuštění funkce Azure Functions

Spuštění funkce Azure pomocí adresy URL http://<function-appn-ame>.azurewebsites.net/api/<function-name>

Adresu URL najdete tak, že kliknete pravým tlačítkem na funkci v editoru Visual Studio Code a zkopírujete adresu URL funkce.

Další informace o spuštění funkce Azure

Zabezpečení funkce Azure Functions

V rámci nastavení důvěryhodné služby pro zřizování přístupových tokenů pro uživatele musíme vzít v úvahu zabezpečení tohoto koncového bodu, abychom zajistili, že žádný aktér nebude moct tokeny pro vaši službu náhodně vytvářet. Azure Functions poskytují integrované funkce zabezpečení, které můžete použít k zabezpečení koncového bodu pomocí různých typů zásad ověřování. Přečtěte si další informace o zabezpečení funkcí Azure Functions.

Vyčištění prostředků

Pokud chcete vyčistit a odebrat předplatné komunikačních služeb, můžete odstranit prostředek nebo skupinu prostředků. Odstraněním skupiny prostředků se odstraní také všechny ostatní prostředky k ní přidružené. Tady najdete další informace o čištění prostředků služby Azure Communication Service a o čištění prostředků funkcí Azure.

Další kroky

Můžete také chtít: