JavaScript-alkalmazások hitelesítése Azure-szolgáltatásokba a helyi fejlesztés során szolgáltatásnevek használatával

Felhőalkalmazások létrehozásakor a fejlesztőknek hibakeresést és tesztelést kell végezniük az alkalmazások helyi munkaállomásán. Ha egy alkalmazás egy fejlesztői munkaállomáson fut a helyi fejlesztés során, akkor is hitelesítenie kell az alkalmazás által használt Azure-szolgáltatásokban. Ez a cikk bemutatja, hogyan állíthat be dedikált alkalmazásszolgáltatás-egyszerű objektumokat a helyi fejlesztés során.

Egy diagram, amely bemutatja, hogy egy JavaScript-alkalmazás a helyi fejlesztés során hogyan használja a fejlesztő hitelesítő adatait az Azure-hoz való csatlakozáshoz a helyileg telepített fejlesztői eszközök beszerzésével.

A helyi fejlesztéshez szükséges dedikált alkalmazásszolgáltatás-tagok lehetővé teszik a minimális jogosultság elvét az alkalmazásfejlesztés során. Mivel az engedélyek hatóköre pontosan az alkalmazáshoz szükséges a fejlesztés során, az alkalmazáskód nem fér hozzá véletlenül egy másik alkalmazás által használni kívánt Azure-erőforráshoz. Ez a módszer azt is megakadályozza, hogy hibák lépjenek fel az alkalmazás éles környezetbe való áthelyezésekor, mert az alkalmazás túlterjedt a fejlesztői környezetben.

Amikor az alkalmazás regisztrálva van az Azure-ban, az alkalmazáshoz egy alkalmazás-szolgáltatásnév van beállítva. A helyi fejlesztésre szánt alkalmazások regisztrálásakor a következőket javasoljuk:

  • Hozzon létre külön alkalmazásregisztrációkat az alkalmazáson dolgozó minden fejlesztő számára. Ez a módszer külön alkalmazásszolgáltatás-tagokat hoz létre az egyes fejlesztők számára, hogy a helyi fejlesztés során használják, és ne kelljen a fejlesztőknek megosztanak hitelesítő adatokat egyetlen alkalmazás-szolgáltatásnévhez.
  • Alkalmazásonként külön alkalmazásregisztrációkat hozhat létre. Ez csak az alkalmazás által igényelt engedélyekre terjed ki.

A helyi fejlesztés során a környezeti változók az application service principal identitásával vannak beállítva. Az Azure SDK for JavaScript beolvassa ezeket a környezeti változókat, és ezeket az információkat felhasználva hitelesíti az alkalmazást a szükséges Azure-erőforrásokon.

1 – Az alkalmazás regisztrálása az Azure-ban

Az alkalmazásszolgáltatás egyszerű objektumai alkalmazásregisztrációval jönnek létre az Azure-ban. Szolgáltatásnevek az Azure Portal vagy az Azure CLI használatával hozhatók létre.

Jelentkezzen be az Azure Portalra , és kövesse az alábbi lépéseket.

Utasítások Képernyőkép
Az Azure Portalon:
  1. Adja meg az alkalmazásregisztrációkat az Azure Portal tetején található keresősávban.
  2. A keresősáv alatt megjelenő menü Szolgáltatások fejléce alatt válassza ki a Alkalmazásregisztrációk címkével ellátott elemet.
Képernyőkép arról, hogyan keresheti meg és navigálhat a Alkalmazásregisztrációk lapra az Azure Portal felső keresősávján.
A Alkalmazásregisztrációk lapon válassza az + Új regisztráció lehetőséget. Képernyőkép az Új regisztráció gomb helyéről a Alkalmazásregisztrációk lapon.
Az Alkalmazás regisztrálása lapon töltse ki az űrlapot az alábbiak szerint.
  1. Név → Adja meg az alkalmazásregisztráció nevét az Azure-ban. Javasoljuk, hogy ez a név tartalmazza az alkalmazás nevét, az alkalmazásregisztráció felhasználóját, és egy olyan azonosítót, mint a "dev", amely jelzi, hogy ez az alkalmazásregisztráció a helyi fejlesztéshez használható.
  2. A támogatott fióktípusok csak ebben a szervezeti címtárban → fiókokat.
Válassza a Regisztráció lehetőséget az alkalmazás regisztrálásához és az alkalmazás-szolgáltatásnév létrehozásához.
Képernyőkép arról, hogyan töltheti ki az Alkalmazás regisztrálása lapot úgy, hogy megad egy nevet az alkalmazásnak, és megadja a támogatott fióktípusokat fiókként csak ebben a szervezeti címtárban.
Az alkalmazás alkalmazásregisztrációs oldalán:
  1. Alkalmazás (ügyfél) azonosítója → Ez az az alkalmazásazonosító, amelyet az alkalmazás a helyi fejlesztés során az Azure-hoz való hozzáféréshez fog használni. Másolja ezt az értéket egy szövegszerkesztő ideiglenes helyére, mert egy későbbi lépésben szüksége lesz rá.
  2. Címtár (bérlő) azonosítója → Az alkalmazásnak erre az értékre is szüksége lesz az Azure-ban való hitelesítéskor. Másolja ezt az értéket egy szövegszerkesztő ideiglenes helyére, amely egy későbbi lépésben is szükség lesz rá.
  3. Ügyfél-hitelesítő adatok → Be kell állítania az alkalmazás ügyfél-hitelesítő adatait, mielőtt az alkalmazás hitelesítést végezhet az Azure-ban, és használhatja az Azure-szolgáltatásokat. Válassza a Tanúsítvány vagy titkos kód hozzáadása lehetőséget az alkalmazás hitelesítő adatainak hozzáadásához.
Képernyőkép az alkalmazásregisztráció befejezése után az alkalmazásazonosító és a bérlőazonosító helyével.
A Tanúsítványok > titkos kódok lapon válassza az + Új ügyfélkód lehetőséget. Képernyőkép a hivatkozás helyéről, amellyel új titkos ügyfélkulcsot hozhat létre a tanúsítványok és titkos kódok lapon.
Az Ügyfélkód hozzáadása párbeszédpanel a lap jobb oldalán jelenik meg. Ebben a párbeszédpanelen:
  1. Leírás → Adja meg az Aktuális értéket.
  2. Lejár → Válasszon egy 24 hónapos értéket.
Válassza a Hozzáadás lehetőséget a titkos kód hozzáadásához.
Képernyőkép arról a lapról, amelyen az alkalmazásregisztrációs folyamat új ügyfélkulcsot ad hozzá az alkalmazás-szolgáltatásnév létrehozásához.
A Tanúsítványok > titkos kódok lapon megjelenik az ügyfél titkos kódjának értéke.

Másolja ezt az értéket egy szövegszerkesztő ideiglenes helyére, mert egy későbbi lépésben szüksége lesz rá.

FONTOS: Ez az egyetlen alkalom, amikor megjelenik ez az érték. A lap elhagyása vagy frissítése után nem fogja tudni újra látni ezt az értéket. További titkos ügyfélkódokat is hozzáadhat anélkül, hogy érvénytelenítenék ezt az ügyféltitkot, de ez az érték többé nem jelenik meg.
Képernyőkép a létrehozott ügyféltitkot tartalmazó oldalról.

2 – Microsoft Entra biztonsági csoport létrehozása helyi fejlesztéshez

Mivel egy alkalmazáson általában több fejlesztő dolgozik, javasoljuk, hogy hozzon létre egy Microsoft Entra-csoportot, amely az alkalmazás által igényelt szerepköröket (engedélyeket) foglalja magában a helyi fejlesztés során ahelyett, hogy a szerepköröket az egyes szolgáltatásnév-objektumokhoz rendelné. Ez a következő előnyöket nyújtja.

  • Minden fejlesztőnek ugyanazok a szerepkörök lesznek hozzárendelve, mivel a szerepkörök csoportszinten vannak hozzárendelve.
  • Ha új szerepkörre van szükség az alkalmazáshoz, azt csak az alkalmazás Microsoft Entra csoportjához kell hozzáadni.
  • Ha egy új fejlesztő csatlakozik a csapathoz, egy új alkalmazásszolgáltatás-tag jön létre a fejlesztő számára, és hozzáadódik a csoporthoz, biztosítva, hogy a fejlesztő megfelelő engedélyekkel rendelkezik az alkalmazás használatához.
Utasítások Képernyőkép
Lépjen a Microsoft Entra ID lapjára az Azure Portalon. Ehhez írja be a Microsoft Entra-azonosítót a lap tetején található keresőmezőbe, majd válassza ki a Microsoft Entra-azonosítót a szolgáltatások alatt. Képernyőkép arról, hogyan kereshet és navigálhat a Microsoft Entra ID oldalára az Azure Portal felső keresősávjával.
A Microsoft Entra ID lapján válassza a Csoportok lehetőséget a bal oldali menüben. Képernyőkép a Csoportok menüelem helyéről a Microsoft Entra ID Alapértelmezett könyvtár lapjának bal oldali menüjében.
A Minden csoport lapon válassza az Új csoportot. Képernyőkép az Új csoport gomb helyéről a Minden csoport lapon.
Az Új csoport lapon:
  1. CsoporttípusSecurity
  2. A csoport neve → A biztonsági csoport neve, amely általában az alkalmazás nevéből jön létre. Az is hasznos, ha a csoport nevében egy helyi fejlesztéshez hasonló sztringet is felveszünk a csoport céljának jelzésére.
  3. A csoport leírása → A csoport céljának leírása.
  4. A Tagok csoportban válassza a Nem kijelölt tagok hivatkozást, ha tagokat szeretne hozzáadni a csoporthoz.
Képernyőkép arról, hogyan hozhat létre új Microsoft Entra-csoportot az alkalmazáshoz.
A Tagok hozzáadása párbeszédpanelen:
  1. A keresőmezővel szűrheti a lista egyszerű neveit.
  2. Válassza ki az alkalmazás helyi fejlesztéséhez szükséges alkalmazásszolgáltatás-tagokat. A kijelölt objektumok szürkén jelennek meg, és a párbeszédpanel alján található Kijelölt elemek listára kerülnek.
  3. Ha végzett, válassza a Kiválasztás gombot.
Képernyőkép a Tagok hozzáadása párbeszédpanelről, amely bemutatja, hogyan választhatja ki a csoportba felvenni kívánt alkalmazásszolgáltatás-tagokat.
Az Új csoport lapon válassza a Létrehozás lehetőséget a csoport létrehozásához.

A rendszer létrehozza a csoportot, és visszavesz a Minden csoport lapra. A csoport megjelenése akár 30 másodpercet is igénybe vehet, és előfordulhat, hogy frissítenie kell az oldalt az Azure Portal gyorsítótárazása miatt.
Képernyőkép az Új csoport lapról, amely bemutatja, hogyan fejezheti be a folyamatot a Létrehozás gombra kattintva.

3 – Szerepkörök hozzárendelése az alkalmazáshoz

Ezután meg kell határoznia, hogy az alkalmazásnak milyen szerepkörökre (engedélyekre) van szüksége az adott erőforrásokhoz, és ki kell osztania ezeket a szerepköröket az alkalmazáshoz. Ebben a példában a szerepkörök a 2. lépésben létrehozott Microsoft Entra-csoporthoz vannak rendelve. A szerepkörök hozzárendelhetők szerepkörökhöz egy erőforrás, erőforráscsoport vagy előfizetés hatókörében. Ez a példa bemutatja, hogyan rendelhet hozzá szerepköröket az erőforráscsoport hatóköréhez, mivel a legtöbb alkalmazás egyetlen erőforráscsoportba csoportosítja az összes Azure-erőforrást.

Utasítások Képernyőkép
Keresse meg az alkalmazás erőforráscsoportját az erőforráscsoport nevére az Azure Portal tetején található keresőmező használatával.

Lépjen az erőforráscsoportra a párbeszédpanel Erőforráscsoportok fejléce alatt található erőforráscsoport nevére kattintva.
Képernyőkép arról, hogyan használható az Azure Portal felső keresőmezője arra az erőforráscsoportra, amelyhez szerepköröket (engedélyeket) szeretne hozzárendelni.
Az erőforráscsoport oldalán válassza a Hozzáférés-vezérlés (IAM) lehetőséget a bal oldali menüben. Képernyőkép az erőforráscsoport oldaláról, amelyen a Hozzáférés-vezérlés (IAM) menüelem helye látható.
A Hozzáférés-vezérlés (IAM) lapon:
  1. Válassza a Szerepkiosztások lapot.
  2. Válassza a +Hozzáadás lehetőséget a felső menüből, majd a szerepkör-hozzárendelés hozzáadása lehetőséget az eredményül kapott legördülő menüből.
Képernyőkép a szerepkör-hozzárendelések lapra való navigálásról, valamint a szerepkör-hozzárendelések erőforráscsoporthoz való hozzáadásához használt gomb helyéről.
A Szerepkör-hozzárendelés hozzáadása lap felsorolja az erőforráscsoporthoz hozzárendelhető összes szerepkört.
  1. A keresőmezővel kezelhetőbb méretre szűrheti a listát. Ez a példa bemutatja, hogyan szűrhet a Storage Blob-szerepkörökre.
  2. Válassza ki a hozzárendelni kívánt szerepkört.
    A Tovább gombra kattintva lépjen a következő képernyőre.
Képernyőkép az erőforráscsoporthoz hozzáadni kívánt szerepkör-hozzárendelések szűréséről és kiválasztásáról.
A következő Szerepkör-hozzárendelés hozzáadása lapon megadhatja, hogy melyik felhasználóhoz rendelje hozzá a szerepkört.
  1. Válassza a Felhasználó, csoport vagy szolgáltatásnév lehetőséget a Hozzáférés hozzárendelése területen.
  2. Select + Select members under Members
Megnyílik egy párbeszédpanel az Azure Portal jobb oldalán.
Képernyőkép arról a választógombról, amellyel szerepkört rendelhet egy Microsoft Entra-csoporthoz, valamint a szerepkör hozzárendeléséhez használt csoport kiválasztására szolgáló hivatkozás.
A Tagok kiválasztása párbeszédpanelen:
  1. A Kijelölés szövegmezővel szűrheti az előfizetésben lévő felhasználók és csoportok listáját. Szükség esetén írja be az alkalmazáshoz létrehozott helyi fejlesztési Microsoft Entra-csoport első néhány karakterét.
  2. Válassza ki az alkalmazáshoz társított helyi fejlesztési Microsoft Entra-csoportot.
A folytatáshoz válassza a Párbeszédpanel alján található Kijelölés lehetőséget.
Képernyőkép az alkalmazás Microsoft Entra-csoportjának szűréséről és kiválasztásáról a Tagok kiválasztása párbeszédpanelen.
A Microsoft Entra csoport a Szerepkör-hozzárendelés hozzáadása képernyőn kiválasztott módon jelenik meg.

A folyamat befejezéséhez válassza a Véleményezés + hozzárendelés lehetőséget a végső lapra való ugráshoz, majd a Véleményezés + hozzárendelés lehetőséget.
Képernyőkép a befejezett Szerepkör-hozzárendelés hozzáadása lapról, valamint a folyamat befejezéséhez használt Véleményezés + hozzárendelés gomb helyéről.

4 – Helyi fejlesztési környezeti változók beállítása

Az DefaultAzureCredential objektum futásidőben a környezeti változók halmazában keresi a szolgáltatásnév adatait. Mivel a legtöbb fejlesztő több alkalmazáson dolgozik, javasoljuk, hogy a fejlesztés során a dotenv-hez hasonló csomagot használva férhessen hozzá a környezethez az alkalmazás könyvtárában tárolt fájlból.env. Ez az alkalmazás Azure-beli hitelesítéséhez használt környezeti változókra terjed ki, így csak az alkalmazás használhatja őket.

A .env fájl soha nem kerül be a forrásvezérlőbe, mivel tartalmazza az Azure alkalmazás titkos kulcsát. A JavaScript szabványos .gitignore fájlja automatikusan kizárja a fájlt a .env bejelentkezésből.

A dotenv csomag használatához először telepítse a csomagot az alkalmazásban.

npm install dotenv

Ezután hozzon létre egy .env fájlt az alkalmazás gyökérkönyvtárában. Állítsa be a környezeti változó értékeit az alkalmazásregisztrációs folyamatból kapott értékekkel az alábbiak szerint:

  • AZURE_CLIENT_ID → Az alkalmazásazonosító értéke.
  • AZURE_TENANT_ID → a bérlőazonosító értékét.
  • AZURE_CLIENT_SECRET → Az alkalmazáshoz létrehozott jelszó/hitelesítő adatok.
AZURE_CLIENT_ID=00000000-0000-0000-0000-000000000000
AZURE_TENANT_ID=11111111-1111-1111-1111-111111111111
AZURE_CLIENT_SECRET=abcdefghijklmnopqrstuvwxyz

Végül az alkalmazás indítási kódjában a dotenv kódtár használatával olvassa be a környezeti változókat a fájlból az .env indításkor.

import 'dotenv/config'

5 – DefaultAzureCredential implementálása az alkalmazásban

Az Azure SDK-ügyfélobjektumok Azure-beli hitelesítéséhez az alkalmazásnak a DefaultAzureCredential csomagból származó @azure/identity osztályt kell használnia. Ebben a forgatókönyvben DefaultAzureCredential észleli a környezeti változókat AZURE_CLIENT_ID, AZURE_TENANT_IDés AZURE_CLIENT_SECRET be van állítva és beolvassa ezeket a változókat, hogy lekérje az Alkalmazásszolgáltatás egyszerű adatait az Azure-hoz való csatlakozáshoz.

Először adja hozzá a @azure/identitáscsomagot az alkalmazáshoz.

npm install @azure/identity

Ezután az azure SDK-ügyfélobjektumot létrehozó JavaScript-kódok esetében a következőket kell elvégeznie:

  1. Importálja az osztályt DefaultAzureCredential a @azure/identity modulból.
  2. Hozzon létre egy objektumot DefaultAzureCredential .
  3. Adja át az DefaultAzureCredential objektumot az Azure SDK ügyfélobjektum-konstruktorának.

Erre példa a következő kódszakaszban látható.

// Azure authentication dependency
import { DefaultAzureCredential } from '@azure/identity';

// Azure resource management dependency
import { SubscriptionClient } from "@azure/arm-subscriptions";

// Acquire credential
const tokenCredential = new DefaultAzureCredential();

async function listSubscriptions() {
  try {

    // use credential to authenticate with Azure SDKs
    const client = new SubscriptionClient(tokenCredential);

    // get details of each subscription
    for await (const item of client.subscriptions.list()) {
      const subscriptionDetails = await client.subscriptions.get(
        item.subscriptionId
      );
      /* 
        Each item looks like:
      
        {
          id: '/subscriptions/123456',
          subscriptionId: '123456',
          displayName: 'YOUR-SUBSCRIPTION-NAME',
          state: 'Enabled',
          subscriptionPolicies: {
            locationPlacementId: 'Internal_2014-09-01',
            quotaId: 'Internal_2014-09-01',
            spendingLimit: 'Off'
          },
          authorizationSource: 'RoleBased'
        },
    */
      console.log(subscriptionDetails);
    }
  } catch (err) {
    console.error(JSON.stringify(err));
  }
}

listSubscriptions()
  .then(() => {
    console.log("done");
  })
  .catch((ex) => {
    console.log(ex);
  });

DefaultAzureCredential automatikusan észleli az alkalmazáshoz konfigurált hitelesítési mechanizmust, és beszerezi az alkalmazás Azure-beli hitelesítéséhez szükséges jogkivonatokat. Ha egy alkalmazás több SDK-ügyfelet használ, ugyanazt a hitelesítő objektumot használhatja minden egyes SDK-ügyfélobjektumhoz.